Envio de E-mail pelo SQL Server – Vários usuários…

Ola galera…
Esta dica foi dada pelo Sr. Yuri Nonato (pense ai um cara que merece todo respeito tecnológico)…

A situação: Criar um e-mail de alerta que informe, 1 vez por dia, ao usuário autorizador os pedidos que estão pendentes de sua autorização.

Recurso: DatabaseMail do SQL Server 2005

Como fazer?
A principio foi pensado em fazer uma tarefa para cada autorizador, onde esta tarefa enviava um e-mail com os pedidos pendentes de autorização para aquele autorizador em um determinado horário, ou seja, teríamos que criar várias tarefas quase idênticas, só alterando o autorizador…

Foi ai que entrou em cena: Yuri Nonato… que disse assim: “Vamos fazer isso de forma recursiva…”
Como?
Vamos fazer uma Procedure que pega o Código e o E-mail do Autorizador e pronto, ai no lugar de criarmos várias tarefas, criaríamos uma unica e chamávamos esta procedure para cada um dos autorizadores…

Resultado:
Ficou mais ou menos assim:

CREATE PROCEDURE [dbo].[sp_SendMail_Autoriza] (@CdUsr int,@Email varchar(80))
AS
BEGIN
DECLARE @Teste int;
DECLARE @Email_Ok varchar(80);
DECLARE @Email_Autorizacao NVARCHAR(MAX)

      SET @Email_Ok = @Email

SET @Email_Autorizacao =
N'<font size=2 face=”arial”>’ +
N’ Prezado Sr. Autorizador, ‘ +
N'<br>’ +
N’ Existe(m) pendencia(s) de autorização no sistema Fulanim (Tela de Autorização) aguardando sua liberação. ‘ +
N'<br>’ +
N'<br>’ +
N'<table border= “1” cellpadding= “1” cellspacing=”0″ width=”100%”>’ +
N'<tr align= center valign= middle>’ +
N'<td bgcolor=”black” width=”5%” align = “center”><font color=”white” size=2><b>TIPO</b></font></td>’ +
N'<td bgcolor=”black” width=”5%” align = “center”><font color=”white” size=2><b>DOCUMENTO</b></font></td>’ +
N'<td bgcolor=”black” width=”10%” align = “center”><font color=”white” size=2><b>FORNEC</b></font>  </td>+
N'<td bgcolor=”black” width=”5%” align = “center”><font color=”white” size=2><b>DATA</b></font></td>’ +
N'</tr>’ +

CAST (
( Select Distinct
td = [NmApl], ”
,            td = [Doc], ”
,            td = [NmFrn] , ”
,            td = [Dt]
From   [dbo].[FuFnAutorização](1, 0, 0, 0, ‘20110101’, getdate(), NULL, NULL, @CdUsr, 0, 0)
                                  — Esta função acima, retorna os pedidos pendentes por autorizador (@CdUsr)
FOR XML PATH(‘tr’), TYPE
) AS NVARCHAR(MAX)
) +

N'</table>’

EXEC msdb.dbo.sp_send_dbmail
@profile_name = ‘Email’,
@recipients=@Email_Ok,
@subject = ‘Documentos Pendentes de Autorização’,
@body = @Email_Autorizacao,
@body_format = ‘HTML’

END

Ai só foi criar uma Tarefa no SQL Server, agendada para ser executada uma vez por dia, contendo o seguinte script:

exec sp_SendMail_Autoriza 24,’yuri.nonato24@meninobom.com.br’;
exec sp_SendMail_Autoriza 21,’autorizador1@meninobom.com.br’;
exec sp_SendMail_Autoriza 22,’autorizador2@meninobom.com.br’;
exec sp_SendMail_Autoriza 23,’autorizador3@meninobom.com.br’ ;
exec sp_SendMail_Autoriza 25,’autorizador5@meninobom.com.br’;

* Não foi lá estas coisas de recursivo, mas livrou de criarmos um monte de tarefas…

Valeu Yuri Nonato!


Vejam também:
Database Mail no SQL Server 2005 (Passo a Passo)

Script: Relatório diário via e-mail de instâncias

Anúncios

6 comentários em “Envio de E-mail pelo SQL Server – Vários usuários…

  1. Tenho uma duvida seria possivel usar css para formatação do email, na verdade minha nessecidade hoje é: tenho um bloco da tabela que preciso colocar um bg e no outro bloco outro bg (zebrar) tem alguma forma de fazer? ou incluir um css para essa formatação?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s