SQL Server – Como enviar o conteúdo de uma tabela ou query no corpo do e-mail como HTML

Visualizações: 643
Tempo de Leitura: 8 minutos

Fala pessoal!!
Neste post eu venho trazer uma solução para um problema que quase todos os dias eu vejo nos grupos de Whatsapp e Telegram: Enviar o conteúdo de uma ou mais tabelas ou queries no corpo de um e-mail como HTML.

A procedure que vamos utilizar nesse post para pegar o conteúdo da tabela e transformar para HTML eu já havia compartilhado no artigo Como exportar dados de uma tabela do SQL Server para HTML, mas vejo que sempre que enviava o artigo, as pessoas ainda tinham dificuldade de enviar o e-mail, então resolvi criar esse artigo para sanar essa dúvida de uma vez por todas.

Se você não sabe como configurar o Database Mail para começar a enviar e-mails pelo SQL Server ou está com dificuldades em enviar e-mails simples, acesse o artigo SQL Server – Como ativar e configurar o Database mail para enviar e monitorar e-mails pelo banco de dados (sp_send_dbmail).

Utilizando a própria sp_send_dbmail e o parâmetro @query

Provavelmente, uma das formas mais utilizadas para enviar o resultado de uma tabela por e-mail é utilizando o parâmetro @query da sp_send_dbmail.

Exemplo:

Resultado:

Como vocês podem perceber, embora seja extremamente simples de se utilizar, o resultado é bem ruim para visualização dos dados..

Utilizando a própria sp_send_dbmail e o parâmetro @attach_query_result_as_file

Vou tentar enviando esse conteúdo como anexo para ver se melhora. Talvez exportando pra arquivo, a saíde fique um pouco melhor..

Exemplo:

Resultado:

Mais um resultado bem ruim… Não melhorou muito.

Utilizando XML para criar uma variável com o resultado em HTML

Vamos utilizar outra abordagem então para tentar exportar os dados da tabela e enviar em um e-mail de forma que fique fácil de visualizar os dados.

Exemplo:

Resultado:

Opa!! Já tá ficando bem melhor! Agora vou personalizar um pouco só pra mostrar a vocês que dá pra brincar com o design das mensagens.

Exemplo:

Resultado:

Tá ficando bem maneiro esse e-mail, hein?? E se eu quiser enviar mais de uma tabela no mesmo e-mail? Tem como???

Exemplo:

Resultado:

Modo Easy: stpExporta_Tabela_HTML_Output

Pensando em facilitar o envio do conteúdo de uma tabela ou query por e-mail como HTML, resolvi criar a Stored Procedure stpExporta_Tabela_HTML_Output para automatizar a transformação do resultado de uma tabela ou query para HTML e poder usar isso para criar um arquivo ou enviar o HTML gerado como o corpo de um e-mail.

Essa procedure já havia sido compartilhada no artigo Como exportar dados de uma tabela do SQL Server para HTML, mas resolvi compartilhar de novo aqui, com foco em envio de e-mail HTML.

Código da stpExporta_Tabela_HTML_Output:
Clique aqui para visualizar o código-fonte

O seu uso é bem simples:

Resultado:

Caso eu queira trocar o alinhamento horizontal, basta utilizar o parâmetro @Ds_Alinhamento:

Resultado:

Caso você queira utilizar o resultado de uma query ao invés do conteúdo de uma tabela inteira, basta utilizar uma tabela temporária global (##tabela), pois a temporária local (#tabela) não irá funcionar:

E para enviar o mesmo e-mail do exemplo utilizando o XML, ficaria assim:

Resultado:

E é isso aí, pessoal!
Espero que tenham gostado dessa dica e até o próximo post.