Personalizamos o envio de e-mail no SQL Server 2008 usando um assembly .NET com métodos de envio de e-mail simples e completo. Para cada método criamos uma Stored Procedure.
Stored Procedure para envio de e-mail simples: [master].[dbo].[LocaWebMailMessage]
Stored Procedure para envio de e-mail completo: [master].[dbo].[LocaWebMailMessage2]
Sintaxe
[master].[dbo].[LocaWebMailMessage2]
Stored Procedure para envio de e-mail completo, onde informamos:
De (nome),
De (endereço),
Para (nome),
Para (endereço),
Cópia Para (nome),
Cópia Para (endereço),
Cópia Oculta Para (nome),
Cópia Oculta Para (endereço),
Resposta Para (nome),
Resposta Para (endereço),
Assunto,
Corpo do E-mail,
Se é HTML ou Texto, Prioridade e Notificação de Entrega.
[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.Pode 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 = 'Locaweb' , @fromAddress = 'info@locaweb.com.br' , @toName = 'Locaweb' , @toAddress = 'locaweb@www10.locaweb.com.br' , @ccName = 'Teste' , @ccAddress = 'diagnosticando@gmail.com' , @bccName = 'Teste2' , @bccAddress = 'diagnosticando@homail.com' , @replyToName = 'Locaweb' , @replyToAddress = 'locaweb@www10.locaweb.com.brr' , @subject = 'Mensagem de teste' , @body = 'Esta também foi enviada pelo SQL Server 2008!' , @isBodyHtml = 1 , @priority = 2 , @deliveryNotificationOptions = 1
Recuperando Exception com TRY/CATCH
BEGIN TRY EXECUTE [master].[dbo].[LocaWebMailMessage2] @fromName = 'Locaweb' , @fromAddress = 'info@locaweb.com.br' , @toName = 'Locaweb' , @toAddress = 'locaweb@www10.locaweb.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