Enviar correos desde SQL Server, enviando emails

Ten en cuenta que antes de probar el código de este post, debiste haber configurado tu servidor SQL. Para realizar esto puedes visitar mi otro post “Enviar correos desde SQL Server, configuración”

El truco está en utilizar un procedimiento almacenado sp_send_dbmail

Por ejemplo:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Perfil', -- IMPORTANTE QUE SEA IGUAL AL CREADO DURANTE LA CONFIGURACION
@recipients = 'webmaster@tucodigofuente.com',
@body = 'La prueba funciono satisfactoriamente',
@subject = 'Correo desde Sql Server' ;

Donde:

@profile_name es el nombre del perfil creado cuando configuraste tu servidor SQL Server
@recipients son las direcciones de correo a las que enviaremos, esta puede ser una o varias separadas por “;”
@body es el texto o cuerpo del mensaje
@subject es el asunto

Otro ejemplo:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Perfil1',
@recipients = 'webmaster@tucodigofuente.com',
@query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrder
WHERE DueDate > ''2004-04-30''
AND DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
@subject = 'Work Order Count',
@attach_query_result_as_file = 1 ;

Otro ejemplo más:

SET @tableHTML =
N'<H1>Work Order Report</H1>' +
N'<table border="1">' +
N'<tr><th>Work Order ID</th><th>Product ID</th>' +
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
N'<th>Expected Revenue</th></tr>' +
CAST ( ( SELECT td = wo.WorkOrderID, '',
td = p.ProductID, '',
td = p.Name, '',
td = wo.OrderQty, '',
td = wo.DueDate, '',
td = (p.ListPrice - p.StandardCost) * wo.OrderQty
FROM AdventureWorks.Production.WorkOrder AS wo
JOIN AdventureWorks.Production.Product AS p
ON wo.ProductID = p.ProductID
WHERE DueDate > '2004-04-30'
AND DATEDIFF(dd, '2004-04-30', DueDate) < 2
ORDER BY DueDate ASC,
(p.ListPrice - p.StandardCost) * wo.OrderQty DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Perfil1'
@recipients='webmaster@tucodigofuente.com',
@body = @tableHTML,
@body_format = 'HTML'
@subject = 'Work Order List'

Este procedimiento puede ser implementado dentro de otro procedimiento. Puedes aprovechar la variable @tableHTML para formatear a detalle tu email.

Descargar ejemplo de procedimiento enviaEmailSugerencia.rar

Referencia: Más parámetros de configuración para msdb.dbo.sp_send_dbmail

Notas relacionadas :

You can leave a response, or trackback from your own site.

Deje una respuesta

Webdesign