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 --