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