[SQL Mail TSQL] Envió de correos desde SQL 2005 parte 2.

28 01 2009

Saludos nuevamente amigos, si leyeron el post anterior y todo les funciono correctamente, les será sumamente sencillo realizar el siguiente script TSQL, lo que haremos es enviar correos electrónicos con código TSQL desde un perfil ya configurado en el post anterior, a continuación les coloco el código:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'sqlPsyPerfil',--Perfil de correo configurado.
    @recipients = 'ivan.rangel.c@gmail.com', -- A quien se va enviar el correo.
    @body = 'Este correo es enviado desde SQL Server 2005 con código TSQL por sqlPsyKrest Blog',--Cuerpo del correo.
    @subject = 'Correo desde TSQL - MS SQL 2005 sqlPsyKrest.',--Asunto del correo.
    @importance = 'High' --[Low | Normal| High] Prioridad del correo.

 

En el script anterior se hizo uso del procedimiento almacenado de Sistema sp_send_dbmail, su función es la de enviar mensajes de correo electrónico desde la base de datos, para ejecutarlo este necesita una serie de parámetros, los cuales no todos son necesarios, los que en este caso se utilizan son:

@profile_name: Perfil de correo de donde se enviara el correo.

@recipients: Destinatarios del correo uno o más.

@body: Cuerpo del correo, por default es de tipo texto.

@subject: Asunto del correo.

@importance = Prioridad del envío del correo.

Dependiendo de la carga que tenga su servidor y de la prioridad configurada en el envió del correo, el correo llegara o se tardara mas tiempo en ser enviado, si no existieron problemas, el correo llegara correctamente a su destino.

image

Ahora enviaremos un correo electrónico con TSQL a partir de una consulta a una Tabla formateada en Tabla HTML.

DECLARE @tableHTML  NVARCHAR(MAX);

SET @tableHTML = 
N'<table border="1" cellpadding="5" cellspacing="0">'+
N'<thead>'+
N'<tr style=''background: Navy;    color: White;font-weight: bold;''>'+
N'<th>Id</th>'+
N'<th>Nombre</th>'+
N'<th>Apellidos</th>'+
N'<th>Email</th>'+
N'<th>Pass</th>'+
N'</tr>'+
N'</thead>'+
N'<tbody>'+
CAST ( ( SELECT td = id, '',
                td = nombre, '',
                td = apellidos, '',
                td = email, '',
                td = pass, ''                
              FROM dbo.USUARIO_SYS
              ORDER BY nombre, apellidos                       
              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) + 
N'</tbody>'+
N'</table>'


EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'sqlPsyPerfil',
    @recipients = 'ivan.rangel.c@gmail.com',    
    @subject = 'Correo desde TSQL 2005 con HTML',
    @body = @tableHTML,
    @body_format = 'HTML',
    @importance = 'High'

Como primer paso declaramos un variable @tablaHTML la cual contendra el cuerpo del mensaje en formato de tabla HTML con ayuda de la clausula FOR XML vista ya en posts anteriores, lo que hace la consulta es tranformar los datos de consulta en texto con características de lenguaje de marcado HTML.

Por ultimo solo nos queda asignar la variable @tablaHTML como nuestro contenido del mensaje, he indicar que el formato del mensaje será HTML con @body_format = ‘HTML’, los demas parametros ya sabemos como configurarlos, y de nuevo solo nos queda esperar a que llegue el correo a su destino como lo muestra la siguiente imagen.

image

Espero les sea de ayuda. Dejen Comentarios!!!








Seguir

Get every new post delivered to your Inbox.