Estes dias ressuscitaram uma das queries de envio de email que já utilizei, dai recordei como era enviar email com os antepassados do SQL Server 2005. Neles era preciso usar o SQL Mail, uma das funcionalidades mais bugadas que já existiram, algo em torno de 300 atualizações só para arrumá-la e tópicos permanentes de erros no Microsoft Suport, mas o SQL Mail deverá morrer depois do SQL Server 2008, COMMIT! e vida longa ao Database Mail!
Mas ainda nesta época, uma das maneiras de evitar o SQL Mail e enviar email em formato HTML pelo SQL Server era utilizando “OLE Automation”, ou seja, programar com componentes do Sistema Operacional (ex. CDONTS).
Como funcionava, e funciona até hoje, segue a “query from hell” que demonstra o uso “OLE Automation” para envio de emails, a salvação de muitos desenvolvedores no SQL Server 2000.
SP_CONFIGURE ‘show advanced options’, 1;
GO
RECONFIGURE;
GO
SP_CONFIGURE ‘Ole Automation Procedures’, 1;
GO
RECONFIGURE;
GO
DECLARE @FROM_ADDRESS VARCHAR(100) = ‘sql@hell.com’,
@TO_ADDRESS VARCHAR(1000) = ‘sql@hell.com’,
@CC_ADDRESS VARCHAR(1000) = ”,
@BCC_ADDRESS VARCHAR(1000) = ”,
@SUBJECT_EMAIL VARCHAR(200) = ‘Ole Automation Procedures Test’,
@BODY_EMAIL VARCHAR(MAX) = ‘This is a test e-mail sent from Ole Automation Procedures on ALEPH.’,
@TYPE_EMAIL INT = 0,
@OMAIL INT,
@RESULT INT
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 @RESULT = SP_OACREATE
‘CDONTS.NEWMAIL’ ,
@OMAIL OUT
IF @RESULT = 0
BEGIN
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘FROM’ ,
@FROM_ADDRESS
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘TO’ ,
@TO_ADDRESS
IF @CC_ADDRESS <> ”
BEGIN
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘CC’ ,
@CC_ADDRESS
END
IF @BCC_ADDRESS <> ”
BEGIN
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘BCC’ ,
@BCC_ADDRESS
END
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘SUBJECT’ ,
@SUBJECT_EMAIL
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘BODY’ ,
@BODY_EMAIL
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘BODYFORMAT’ ,
@TYPE_EMAIL
EXEC @RESULT = SP_OASETPROPERTY
@OMAIL ,
‘MAILFORMAT’ ,
@TYPE_EMAIL
EXEC @RESULT = SP_OAMETHOD
@OMAIL ,
‘SEND’ ,
NULL
EXEC SP_OADESTROY
@OMAIL
END
Se gostar dessa, dê uma olhada em outra, que utiliza “OLE Automation” para manipular o Excel pelo SQL Server:
http://mail.simple-talk.com/sql/t-sql-programming/sql-server-excel-workbench/#sixth
Para quem quer facilidade para enviar email pelo SQL, consulte o tutorial sobre como configurar o Database Mail do SQL Server, escrito pelo Zavaschi:
http://thiagozavaschi.spaces.live.com/blog/cns!8DE5A8EFC1819ECA!309.entry
Referências: