Enviando mensagens de e-mail usando o Database
Use o procedimento armazenado sp_send_dbmail
Uso
EXEC msdb.dbo.sp_send_dbmail @profile_name = '
profile_name
', @recipients = 'recipient1@example.com
[;recipient2
; ...recipientn
]', @subject = 'subject
', @body = 'message_body
', [@body_format = 'HTML'], [@file_attachments = 'file_path1
;file_path2
; ...file_pathn
'], [@query = 'SQL_query'
], [@attach_query_result_as_file =0|1
]';
Os seguintes parâmetros são obrigatórios:
-
@profile_name
– o nome do perfil Database Mail a partir do qual enviar a mensagem. -
@recipients
– a lista delimitada por ponto e vírgula de endereços de e-mail para os quais enviar a mensagem. -
@subject
– o assunto da mensagem. -
@body
– o corpo da mensagem. Você também pode usar uma variável declarada como o corpo.
Os seguintes parâmetros são opcionais:
-
@body_format
– esse parâmetro é usado com uma variável declarada para enviar e-mail em formato HTML. -
@file_attachments
– a lista delimitada por ponto e vírgula de anexos de mensagens. Os caminhos de arquivo devem ser caminhos absolutos. -
@query
– uma consulta SQL a ser executada. Os resultados da consulta podem ser anexados como um arquivo ou incluídos no corpo da mensagem. -
@attach_query_result_as_file
– Se deve anexar o resultado da consulta como um arquivo. Defina como 0 para não, 1 para sim. O padrão é 0.
Exemplos
Os exemplos a seguir demonstram como enviar mensagens de e-mail.
exemplo de enviar uma mensagem para um único destinatário
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Automated DBMail message - 1', @body = 'Database Mail configuration was successful.'; GO
exemplo de enviar uma mensagem para vários destinatários
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'recipient1@example.com;recipient2@example.com', @subject = 'Automated DBMail message - 2', @body = 'This is a message.'; GO
exemplo de enviar um resultado de consulta SQL como um anexo de arquivo
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Test SQL query', @body = 'This is a SQL query test.', @query = 'SELECT * FROM abc.dbo.test', @attach_query_result_as_file = 1; GO
exemplo de enviar uma mensagem em formato HTML
USE msdb GO DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>'; EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Test HTML message', @body = @HTML_Body, @body_format = 'HTML'; GO
exemplo de enviar uma mensagem usando um gatilho quando ocorre um evento específico no banco de dados
USE AdventureWorks2017 GO IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL DROP TRIGGER Purchasing.iProductNotification GO CREATE TRIGGER iProductNotification ON Production.Product FOR INSERT AS DECLARE @ProductInformation nvarchar(255); SELECT @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!' FROM INSERTED i; EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'New product information', @body = @ProductInformation; GO