AT-05 Enviar email via SP

Transcrição

AT-05 Enviar email via SP
ADMINISTRAÇÃO DE BANCO DE
DADOS
ARTEFATO 05
AT05 – Enviar email via SP com CDONTS e T-SQL
Indice
INTRODUÇÃO .............................................................................................................................. 3
CÓDIGO DA STORED PROCEDURE ......................................................................................... 3
Introdução
Quem geralmente utiliza o SQL Server para armazenar as regras de negócios de um
sistema/site, utiliza bastante o recurso de Procedures Armazenadas (Stored
Procedures) usando como linguagem o T-SQL.
Provavelmente em algum momento será necessário enviar e-mail utilizando as
próprias procedures. Uma das soluções é instanciar o componente CDONTS para
realizar esta tarefa.
Este código foi desenvolvido em T-SQL que cria uma procedure que utiliza o
CDONTS.dll para o envio de email.
A procedure não verifica se os endereços de emails passados são válidos, os
parametros estão todos comentados no código.
Aviso: É necessário que no servidor do SQL Server tenha instalado o componente
CDONTS.
Código da Stored Procedure
1. /*
2.
PROCEDURE QUE ENVIA UM EMAIL ATRAVÉS DO COMPONENTE CDONTS.DLL
3.
PARAMETROS:
4.
@FROM_ADDRESS
- ENDEREÇO DE EMAIL FROM
5.
@TO_ADDRESS
- ENDEREÇOS DE EMAILS TO (SEPARADOS POR
6.
@CC_ADDRESS
- ENDEREÇOS DE EMAILS CC (CÓPIA CARBONO)
(SEPARADOS POR
7.
@BCC_ADDRESS
- ENDEREÇOS DE EMAILS BCC (CÓPIA CARBONO
OCULTA) (SEPARADOS POR
8.
@ASSUNTO_EMAIL
- ASSUNTO DO EMAIL
9.
@MENSAGEM_EMAIL
- CORPO DO EMAIL (MENSAGEM)
@TIPO_EMAIL
- TIPO DA MENSAGEM (TEXTO=1 OU HTML=0), O
10.
DEFAULT É HTML
11. */
12. CREATE PROCEDURE SP_ENVIA_EMAIL
13.
@FROM_ADDRESS VARCHAR(100),
14.
@TO_ADDRESS VARCHAR(1000),
15.
@CC_ADDRESS VARCHAR(1000) = '',
16.
@BCC_ADDRESS VARCHAR(1000) = '',
17.
@ASSUNTO_EMAIL VARCHAR(200) = '',
18.
@MENSAGEM_EMAIL TEXT = '',
19.
@TIPO_EMAIL INT = 0
20. AS
21.
22. SET NOCOUNT ON
23.
24.
DECLARE @OMAIL
INT -- OBJETO CDONTS
25.
DECLARE @RESULTADO
INT -- RESULTADO DAS CHAMADAS DO OBJETO
26.
27.
-- CORRIGINDO OS ENDEREÇOS DE EMAILS
28.
SET @FROM_ADDRESS = REPLACE(@FROM_ADDRESS, ' ', '')
29.
SET @FROM_ADDRESS = REPLACE(@FROM_ADDRESS, ';', ',')
30.
31.
SET @TO_ADDRESS = REPLACE(@TO_ADDRESS, ' ', '')
32.
SET @TO_ADDRESS = REPLACE(@TO_ADDRESS, ';', ',')
33.
34.
SET @CC_ADDRESS = REPLACE(@CC_ADDRESS, ' ', '')
35.
SET @CC_ADDRESS = REPLACE(@CC_ADDRESS, ';', ',')
36.
37.
SET @BCC_ADDRESS = REPLACE(@BCC_ADDRESS, ' ', '')
38.
SET @BCC_ADDRESS = REPLACE(@BCC_ADDRESS, ';', ',')
39.
40.
EXEC @RESULTADO = SP_OACREATE 'CDONTS.NEWMAIL', @OMAIL OUT -- INSTANCIANDO O
OBJETO CDONTS
41.
42.
IF @RESULTADO = 0 -- VERIFICANDO SE FOI POSSÍVEL CRIAR O OBJETO
43.
BEGIN
44.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'FROM'
, @FROM_ADDRESS --
ENDEREÇO DE EMAIL FROM
45.
46.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'TO'
-- ENDEREÇO DE EMAIL TO
47.
,
@TO_ADDRESS
48.
-- VERIFICANDO SE O ENDEREÇO CC NÃO ESTÁ VAZIO
49.
IF @CC_ADDRESS <> ''
50.
BEGIN
51.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'CC',
@CC_ADDRESS
--
ENDEREÇO DE EMAIL CC
52.
END
53.
54.
-- VERIFICANDO SE O ENDEREÇO BCC NÃO ESTÁ VAZIO
55.
IF @BCC_ADDRESS <> ''
56.
BEGIN
57.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BCC',
@BCC_ADDRESS
-
- ENDEREÇO DE EMAIL BCC
58.
END
59.
60.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'SUBJECT', @ASSUNTO_EMAIL
-- ASSUNTO
61.
62.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BODY', @MENSAGEM_EMAIL
CORPO DO EMAIL
63.
64.
-- TIPO DE EMAIL (TEXTO/HTML)
65.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BODYFORMAT', @TIPO_EMAIL
66.
EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'MAILFORMAT', @TIPO_EMAIL
67.
68.
-- ENVIANDO O EMAIL
69.
EXEC @RESULTADO = SP_OAMETHOD @OMAIL, 'SEND', NULL
70.
71.
72.
EXEC SP_OADESTROY @OMAIL -- DESTRUINDO A INSTANCIA DO OBJETO CDONTS
END
73. SET NOCOUNT OFF
--

Documentos relacionados