Enviar e-mail usando Oracle com G-mail.
Autor: Alessandro Cordeiro | Publicado: 2014-02-12T13:18:00-08:00


&nbsp;&nbsp; Muitas empresas estão usando os servidores de e-mail externo
como o G-mail para uso de correios eletrônicos ao invés de montarem servidores
para esta finalidade, isto reduz o custo de T.I. 

&nbsp;&nbsp; Ocorre que ao realizar esta mudança, pode acontecer que o
sistema que enviava e-mail normalmente com o servidor SMTP local possa não mais
funcionar, a razão&nbsp;é que o gmail
exige&nbsp;conexão&nbsp;autenticada&nbsp;segura&nbsp;(preferencialmente via
protocolo TLS)&nbsp;.

&nbsp;&nbsp;
Este foi o caso em que uma aplicação de um cliente mandava e-mail usando os
pacote PL/SQL de envio de e-mail, e depois de usarem o g-mail a aplicação - mais especificamente o Oracle -&nbsp;não consegui mais enviar e-mail.

&nbsp; Para criar uma conexão segura é preciso esta usando no mínimo o Oracle na versão 11.2.0.2 e além disso&nbsp;não esta disponível na versão XE. Sendo preciso criar um Oracle Wallet, como discorrido em http://arkatec.wordpress.com/2011/08/15/sending-email-using-oracle-database-and-google-mail-service/
.

&nbsp;&nbsp; Supondo que a versão do Oracle seja inferior ou que a edição seja Express Edition, neste caso&nbsp;ainda podemos&nbsp;enviar e-mail pelo g-mail, mas usando o emailrelay, e é&nbsp;isto que quero mostrar neste artigo, para referência&nbsp;que possa ajudar que passar pelo mesmo problema, além disso servir como documentação para mim, caso preciso fazer isso em mais servidores.&nbsp; O cenário aqui apresentado é um servidor Windows Server 2008.

1 -&nbsp;Baixe o programa emailrelay e mande instalar o mesmo
1.1 - Na primeira Janela vem com as informações do programa, click em Next&gt;
1.2 - Depois a licença, marque a opção de aceitar a licença e click em Next&gt;
1.3 - A próxima janela mostra o diretório onde será instalado além do Spool e configuração. Aceite o padrão e click em Next&gt;
1.4 - Em Tipo de Instalação marque o SMTP Server e depois escolha a opção "Check periodically" e 
1.5 - Na próxima janela configure com a informação do seu G-mail. Em HostName digite smtp.gmail.com e na Port 587 e na parte "Account" coloque a informação do seu e-mail com Login&nbsp;no editor Name e a Senha no editor PassWord; Click em Next&gt;
1.6 - Nas demais janelas aceite as opções padrões e click em Next&gt; para terminar a instalação.

2 - Depois de instalado será preciso alterar o arquivo de configuração para o G-mail, o arquivo é o 
emailrelay-star.bat e ele vai estar no caminho de instalação (passo 1.3), mas normalmente esta em c:\arquivos de programa\emailrelay;

2.1&nbsp;Altere o arquivo como no exemplo abaixo;

&nbsp;"C:\Arquivos de programas\emailrelay\emailrelay.exe"
--as-proxy smtp.gmail.com:587 --client-tls --client-auth "C:\Arquivos de
programas\emailrelay\emailrelay.auth" --log --pid-file "C:\Arquivos
de programas\emailrelay\emailrelay.pid" --poll 60 --remote-clients
--spool-dir C:\Windows\spool\emailrelay --syslog --verbose

2.2&nbsp;Abre o arquivo emailrelay.auth e confirme&nbsp;que o Login e a Senha estão corretos.

3 -&nbsp; Pelo CMD vá no diretório de instalação do E-mail relay e digite&nbsp;emailrelay-service.exe -install para criar o serviço no Windows.

3.1 Depois entre no serviço do Windows (Iniciar -&gt; Executar -&gt; Services.msc) e inicie o serviço caso ainda não esta inicializado.


Agora vamos no Oracle realizar alguns ajustes.

1 - Com usuário SYS altere o parâmetro SMTP_OUT_SERVER

&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;ALTER SYSTEM SET SMTP_OUT_SERVER='localhost' SCOPE=SPFILE;

2-Então Reinicie a instância Oracle.

3- Então pode usar diretamente o UTL_MAIL ou o UTL_SMPT;
3.1 Usando o UTL_MAIL, instale o pacote caso não exista; 
SQL&gt; @?/rdbms\admin\utlmail.sql;
SQL&gt; @?/rdbms\admin\prvtmail.plb

E chame o pacote de enviar e-mail como no exemplo abaixo:
&nbsp;

UTL_MAIL.send(sender&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'My Name "&lt;ale.lucio.cordeiro@gmail.com&gt;"',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recipients =&gt; 'destino@gmail.com',

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject&nbsp;&nbsp;&nbsp; =&gt; 'Teste',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message&nbsp;&nbsp;&nbsp; =&gt; 'Bom trabalho!');


3.2 Caso esteja usando o pacote UTL_SMPT, basta informar localhost  na conexão e retirar a parte de autenticação


Parte
que precisa ser retirado






utl_smtp.command(mail_conn, 'AUTH
LOGIN');


utl_smtp.command(mail_conn,

utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(v_usuario))));

utl_smtp.command(mail_conn,

utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(p_senha))));

&nbsp;

&nbsp;

OBS; 

Caso ocorra o erro SMTP
permanent error: 553 verifique se você respeitou o uso das aspas simples e dupla além dos &lt;&gt; entre o endereço de e-mail, coloque como no exemplo supracitado.





&nbsp;

Pronto, o Oracle já consegue enviar e-mail pelo G-mail;

&nbsp;

Espero ter ajudado.