SQL Server – Enviando Emails

Este processo pode implementado em um servidor de banco de dados MS-SQL Server 2005/2008 de forma personalizada.

Disponibilizamos 2 Stored Procedures que efetuam esta tarefa. Abaixo seguem maiores detalhes:

Simples – [master].[dbo].[LocaWebMailMessage] Stored Procedure com quantidade reduzida de parâmetros. Ideal para simples envio de e-mail.

 Sintaxe:  [master].[dbo].[LocaWebMailMessage]  [@fromName = 'fromName']  , @fromAddress = 'fromAddress' [ ,@toName = 'toName']  , @toAddress = 'toAddress' , @subject = 'subject' , @body = 'body'  [ ,@isBodyHtml = bit]   Argumentos:  @fromName = Nome do Remetente (opcional)  @fromAddress = Endereço do e-mail do remetente  @toName = Nome do Destinatário (opcional)  @toAddress = Endereço de e-mail do destinatário  @subject = Assunto do e-mail  @body = Corpo do e-mail  @isBodyHtml = Se o e-mail está em HTML ou texto. Pode ser 0 ou 1 e o padrão é texto (0)    Exemplos:  --Envio de mensagem simples com nomes  EXECUTE [master].[dbo].[LocaWebMailMessage]  @fromName = 'Nome do Remetente'  , @fromAddress = 'remetente@seudominio.com.br'  , @toName = 'Nome do Destinatário'  , @toAddress = 'destinatario@seudominio.com.br'  , @subject = 'Mensagem de teste'  , @body = 'Esta mensagem também foi enviada pelo <b><u>SQL Server 2005.</u></b>'  , @isBodyHtml = 1    Detalhado - [master].[dbo].[LocaWebMailMessage2]  Semelhante a primeira, esta Stored Procedure é mais detalhada. Podemos informar dados como: cópia oculta, prioridade, e-mail de resposta, etc.   Sintaxe:  [master].[dbo].[LocaWebMailMessage2]  [@fromName = 'fromName']  , @fromAddress = 'fromAddress'  [ ,@toName = 'toName']  , @toAddress = 'toAddress'  [ ,@ccName = 'toName']  [, @ccAddress = 'toAddress']  [ ,@bccName = 'toName']  [, @bccAddress = 'toAddress']  [ ,@replyToName = 'toName']  [, @replyToAddress = 'toAddress']  , @subject = 'subject'  , @body = 'body'  [ ,@isBodyHtml = bit]  [ ,@priority = int]  [ ,@deliveryNotificationOptions = int]   Argumentos:   @fromName = Nome do Remetente (opcional)  @fromAddress = Endereço do e-mail do remetente  @toName = Nome do Destinatário (opcional)  @toAddress = Endereço de e-mail do destinatário  @ccName = Nome do destinatário da cópia (opcional)  @ccAddress = Endereço de e-mail do destinatário da cópia (opcional)  @bccName = Nome do destinatário da cópia oculta (opcional)  @bccAddress = Endereço de e-mail do destinatário da cópia oculta (opcional)  @replyToName = Nome do e-mail que receberá a resposta. (opcional)  @replyToAddress = Endereço de e-mail que receberá a resposta. (opcional)  @subject = Assunto do e-mail  @body = Corpo do e-mail  @isBodyHtml = Se o e-mail está em HTML ou texto. Pode ser 0 ou 1 e o padrão é texto (0)  @priority = Prioridade da mensagem. Pode ser: 0 - O e-mail tem prioridade normal; 1 O e-mail tem prioridade baixa; 2 O e-mail tem prioridade alta.  @deliveryNotificationOptions = Opções de notificações de entrega. Podem ser:  0 Sem notificação;  1 Notifica se a entrega ocorre com sucesso;  2 Notifica se ocorreu falha na entrega;  4 Notifica se a entrega ocorre com demora;  134217728 Nunca notifica. (pode ser a soma de opções)   Exemplos:   -- Envio de mensagem completa  EXECUTE [master].[dbo].[LocaWebMailMessage2]  @fromName = 'Remetente'  , @fromAddress = 'Remetente@seudominio.com.br'  , @toName = 'Destinatário'  , @toAddress = 'destinatario@seudominio.com.br'  , @ccName = 'Cópia'  , @ccAddress = 'copia@seudominio.com.br  , @bccName = 'Cópia oculta'  , @bccAddress = 'copiaoculta@seudominio.com.br , @replyToName = 'Nome de Resposta'  , @replyToAddress = 'resposta@seudominio.com.br'  , @subject = 'Mensagem de teste 1 '  , @body = '<h2>Esta também foi enviada pelo SQL Server 2005!</h2>'  , @isBodyHtml = 1  , @priority = 0  , @deliveryNotificationOptions =0   --Recuperando Exception com TRY/CATCH  BEGIN TRY  EXECUTE [master].[dbo].[LocaWebMailMessage2]  @fromName = 'Nome'  , @fromAddress = 'From@seudominio.com.br'  , @toName = 'Destino'  , @toAddress = 'toAddress@seudominio.com.br'  , @subject = 'Teste de Exception'  , @body = 'Vai gerar erro porque o remetente está com 3 @s.'  END TRY  BEGIN CATCH  SELECT  ERROR_NUMBER() AS ErrorNumber,  ERROR_SEVERITY() AS ErrorSeverity,  ERROR_STATE() AS ErrorState,  ERROR_PROCEDURE() AS ErrorProcedure,  ERROR_LINE() AS ErrorLine,  ERROR_MESSAGE() AS ErrorMessage;  END CATCH  

Veja também