Enviar email no SQL Server usando o CDONTS com T-SQL

Veja neste artigo como enviar email no SQL Server usando o CDONTS com T-SQL

Enviar email no SQL Server usando o CDONTS com T-SQL

 

Extraído do site: www.codigofonte.com.br

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.

Veja o código abaixo:

 

/*

PROCEDURE QUE ENVIA UM EMAIL ATRAVÉS DO COMPONENTE CDONTS.DLL

PARAMETROS:  

@FROM_ADDRESS- ENDEREÇO DE EMAIL FROM 

@TO_ADDRESS- ENDEREÇOS DE EMAILS TO (SEPARADOS POR ;)  

@CC_ADDRESS- ENDEREÇOS DE EMAILS CC (CÓPIA CARBONO) (SEPARADOS POR ;)  

@BCC_ADDRESS- ENDEREÇOS DE EMAILS BCC (CÓPIA CARBONO OCULTA) (SEPARADOS POR ;)  

@ASSUNTO_EMAIL- ASSUNTO DO EMAIL  

@MENSAGEM_EMAIL- CORPO DO EMAIL (MENSAGEM)  

@TIPO_EMAIL- TIPO DA MENSAGEM (TEXTO=1 OU HTML=0), O DEFAULT É HTML  

*/  

CREATE PROCEDURE SP_ENVIA_EMAIL  

@FROM_ADDRESS VARCHAR(100),  

@TO_ADDRESS VARCHAR(1000),  

@CC_ADDRESS VARCHAR(1000) = '',  

@BCC_ADDRESS VARCHAR(1000) = '',  

@ASSUNTO_EMAIL VARCHAR(200) = '',  

@MENSAGEM_EMAIL TEXT = '',  

@TIPO_EMAIL INT = 0  

AS

 

SET NOCOUNT ON 

 

DECLARE @OMAILINT -- OBJETO CDONTS  

DECLARE @RESULTADOINT -- RESULTADO DAS CHAMADAS DO OBJETO  

 

-- CORRIGINDO OS ENDEREÇOS DE EMAILS

SET @FROM_ADDRESS = REPLACE(@FROM_ADDRESS, ' ', '')  

SET @FROM_ADDRESS = REPLACE(@FROM_ADDRESS, ';', ',')  

SET @TO_ADDRESS = REPLACE(@TO_ADDRESS, ' ', '')  

SET @TO_ADDRESS = REPLACE(@TO_ADDRESS, ';', ',')  

SET @CC_ADDRESS = REPLACE(@CC_ADDRESS, ' ', '')  

SET @CC_ADDRESS = REPLACE(@CC_ADDRESS, ';', ',')  

SET @BCC_ADDRESS = REPLACE(@BCC_ADDRESS, ' ', '')  

SET @BCC_ADDRESS = REPLACE(@BCC_ADDRESS, ';', ',')  

EXEC @RESULTADO = SP_OACREATE 'CDONTS.NEWMAIL', @OMAIL OUT -- INSTANCIANDO O OBJETO CDONTS  

 

IF @RESULTADO = 0 -- VERIFICANDO SE FOI POSSÍVEL CRIAR O OBJETO  

BEGIN

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'FROM', @FROM_ADDRESS -- ENDEREÇO DE EMAIL FROM  

 

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'TO',@TO_ADDRESS-- ENDEREÇO DE EMAIL TO  

-- VERIFICANDO SE O ENDEREÇO CC NÃO ESTÁ VAZIO  

IF @CC_ADDRESS <> '' 

BEGIN 

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'CC',  @CC_ADDRESS-- ENDEREÇO DE EMAIL CC  

END 

-- VERIFICANDO SE O ENDEREÇO BCC NÃO ESTÁ VAZIO  

IF @BCC_ADDRESS <> '' 

BEGIN 

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BCC',  @BCC_ADDRESS-- ENDEREÇO DE EMAIL BCC  

END 

 

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'SUBJECT', @ASSUNTO_EMAIL-- ASSUNTO  

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BODY', @MENSAGEM_EMAIL-- CORPO DO EMAIL  

 

-- TIPO DE EMAIL (TEXTO/HTML)  

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'BODYFORMAT', @TIPO_EMAIL

EXEC @RESULTADO = SP_OASETPROPERTY @OMAIL, 'MAILFORMAT', @TIPO_EMAIL  

 

-- ENVIANDO O EMAIL

EXEC @RESULTADO = SP_OAMETHOD @OMAIL, 'SEND', NULL 

EXEC SP_OADESTROY @OMAIL -- DESTRUINDO A INSTANCIA DO OBJETO CDONTS  

END 

SET NOCOUNT OFF 

 

Artigos relacionados