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

SQL Server – Como enviar e-mails pelo banco de dados utilizando CLR (C#)
5 (100%) 1 voto

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!

SQL, sql server, sql server 2008, sql server 2008 R2, Oracle, Oracle Database, Oracle 11g, Oracle 10g, Oracle 12c, MySQL, Firebird, Consultoria, Consultor, Programador, Programação. Desenvolvedor, Analista de Sistemas, DBA, Criação de website, Criação de Sistema Web, Vitória, Vila Velha, Guarapari, Espírito Santo, ES, Consultoria SQL em VItória, Treinamento, Curso, Prestação de serviço, prestar serviço, freelancer, freela, banco de dados, consultoria em banco de dados, consultor de banco de dados

4 Comments

Deixe uma resposta