Início > SQL Server, Treinamentos > Envio de E-mail pelo SQL Server – Vários usuários…

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

  1. raphaelrodrigox@gmail.com
    28/04/2015 às 12:18

    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?

    • 04/05/2015 às 17:07

      Cara, o SQL usa os recursos do html, creio que possa utilizar ccs sem problemas!

  1. 09/10/2012 às 11:26
  2. 31/10/2012 às 11:26
  3. 01/04/2013 às 14:50
  4. 17/12/2013 às 15:28

Deixe uma resposta

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s