SQL Server – Como enviar e-mails pelo banco de dados utilizando CLR (C#)

Visualizações: 381
Tempo de Leitura: 5 minutos

Olá pessoal,
Boa tarde!
Tudo bem com vocês ?

Neste post vou demonstrar como enviar e-mails pelo banco de dados utilizando o CLR (C#). No post SQL Server – Como ativar e configurar o Database mail para enviar e monitorar e-mails pelo banco de dados (sp_send_dbmail) eu já havia demonstrado como enviar os e-mails pelo Database Mail do SQL Server, e desta vez vou mostrar como fazer isso diretamente pelo C#, sem precisar nem configurar nada no SQL Server para fazer o envio do e-mail.

Envio de e-mail simples

Neste primeiro exemplo, vou demonstrar a forma mais simples de se enviar um e-mail no formato HTML, com anexos, pelo CLR utilizando a linguagem de programação C#. Vejam como é fácil:

Envio de e-mail mais completo

Já neste segundo código-fonte, vou demonstrar uma forma mais completa e organizada de se criar uma Stored Procedure de envio de e-mail no CLR. Para isso, vou separar as informações de autenticação em classes separadas e adicionar os seguintes recursos adicionais:

  • Validação de parâmetros de entrada (input)
  • Gravação de log de envio de e-mail para auditoria
  • Rotina de RETRY, para tentar enviar o e-mail até 10x em caso de falha
  • Try..Catch para tratamento de erros e exceções

Pré-Requisitos

Antes de demonstrar o código-fonte da Stored Procedure de envio de e-mail, você irá precisar criar as classes dependentes abaixo, além da classe Retorno, que utilizo para enviar mensagens de erro para o banco de dados. O código dessa classe você entra no post SQL Server – Como enviar avisos e mensagens de erro para o banco pelo CLR (C#).

Servidor.cs

Utils.cs

Código-fonte da Stored Procedure stpEnvia_Email:

Exemplos de uso

Veja abaixo, alguns exemplos de como utilizar essa Stored Procedure no seu dia a dia.

Envio de e-mail simples:

Envio de e-mail para múltiplos destinatários:

Envio de e-mail com anexo:

Envio de e-mail com múltiplos anexos:

Espero que tenham gostado do post e até a próxima.
Abraço!