ENVIAR E-MAIL - ORACLE - EXCHANGE

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Srs,
Boa Tarde.
Eu tenho um servidor na locaweb, que esta instalado o Oracle e na locaweb também eu possuo o serviço de Exchange.
Estou tentando fazer uma procedure que envia e-mails, só que estou tendo grandes dificuldades.
Alguém do forum já passou pelo mesmo problema?
Abraços.
Ricardo MMO
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Segue abaixo Procedure:

Selecionar tudo

CREATE OR REPLACE PROCEDURE ENVIA_MAIL(RECIPIENT   IN VARCHAR2,
                     STRASSUNTO  IN VARCHAR2,
                     STRMENSAGEM IN VARCHAR2) IS
  MAILHOST     VARCHAR2(64) := 'smtp.exchange.locaweb.com.br';
  SENDER       VARCHAR2(64) := 'administrator@sistemadrydream.com.br';
  VCABMENSAGEM VARCHAR2(2000);
  ITAM         INTEGER;
  MENSAGEM     VARCHAR2(32000) := STRMENSAGEM;
  MAIL_CONN    UTL_SMTP.CONNECTION;
BEGIN
  MAIL_CONN := UTL_SMTP.OPEN_CONNECTION(MAILHOST, 25);
  UTL_SMTP.HELO(MAIL_CONN, MAILHOST);
  UTL_SMTP.MAIL(MAIL_CONN, SENDER);
  UTL_SMTP.RCPT(MAIL_CONN, RECIPIENT);
  VCABMENSAGEM := 'SUBJECT: =?ISO-8859-1?Q?' || STRASSUNTO || '?=' ||
                  CHR(10) || 'DATE: ' ||
                  TO_CHAR(SYSDATE, 'DY, DD MON YYYY HH24:MI:SS') ||
                  ' -0300' || CHR(10) ||
                  'CONTENT-TYPE: TEXT/HTML;CHARSET="ISO-8859-1"' || CHR(10) ||
                  'CONTENT-TRANSFER-ENCODING: QUOTED-PRINTABLE' || CHR(10) ||
                  'FROM: ' || SENDER || CHR(10) || 'TO: ' || RECIPIENT ||
                  CHR(10) || CHR(10) || CHR(10);
  UTL_SMTP.OPEN_DATA(MAIL_CONN);
  UTL_SMTP.WRITE_DATA(MAIL_CONN, VCABMENSAGEM);
  LOOP
    UTL_SMTP.WRITE_DATA(MAIL_CONN, SUBSTR(MENSAGEM, 1, 2000));
    ITAM := LENGTH(MENSAGEM);
    IF (ITAM > 2000) THEN
      MENSAGEM := SUBSTR(MENSAGEM, 2001, ITAM);
    ELSE
      EXIT;
    END IF;
  END LOOP;
  UTL_SMTP.CLOSE_DATA(MAIL_CONN);
  UTL_SMTP.QUIT(MAIL_CONN);
EXCEPTION
  WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLERRM);
END ENVIA_MAIL;
Erro apresentado: ORA-29278: SMTP transient error: 451 antispam.publiccloud.com.br Connection timeout [186.202.22.6]
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5018
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Este LINK fala que pode ser algo bloqueando a porta 25. (Talvez algum anti virus, ou algo assim).

http://www.dba-oracle.com/sf_ora_29278_ ... ng_bc1.htm
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

O erro que esta dando é o seguinte:
ORA-29279: SMTP permanent error: 504 5.7.4 Unrecognized authentication type
Parece que é no código Oracle mesmo o problema, esta falando que o tipo de autenticação é inválido parece que o tipo é informado na parte : utl_smtp.command (v_conn, 'AUTH LOGIN'); esse AUTH LOGIN parece que é o problema.

O problema não é porta, estou utilizando a porta 587 não é nem a 25 e com certeza ela esta liberada.

att,
Ricardo MMO
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

se o servidor usar SSL já era cara, não funciona...

:D
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Cara, a Exchane usa TLS , criptografia na parada... acho que já era...
Não to vendo nada no google de alguém ter feito chamada de envio de e-mail com Exchange usando TLS.
att,
Ricardo MMO
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Não tem como desabilitar a criptografia TLS ? alguém sabe?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

não tem cara..

uma vez vi um programa que fazia uma gambiarra, tipo um tunnel, mas não implementei,

a ideia era mandar pra um servidor interno, que fazia o encaminhamento usando SSL,

você pode tentar implementar uma classe em java dentro do banco...

;)
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Em Oracle Xe eu acho difícil, será que da?

Acho que vo desativar este serviço de e-mail da LocaWeb e verificar outra empresa que tenha uma exchange sem SSL/TLS, ou seja, só autenticação básica.

Sugere alguma empresa Diego?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

não conheco cara...

=/

acho que dá pra usar BOL, HOTMAIL, algum desses cara, gmail eu sei que usa SSL.. mas tente ver algum e-mail gratuito, yahoo, não sei...

:D
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Da para mandar e-mail por chamada Oracle através destes e-mails de provedores? Não brinca?
Como eu descubro o endereço do servidor SMTP ? Qual porta uso? É preciso autenticação claro né?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

no site deles sempre tem um lugar lá,

"como configurar no outlook"

ai eles fornecem o smtp e porta...

http://www.google.com.br/search?sclient ... 40&bih=767

mas a maioria parece usar conexao segura (SSL).. aí o oracle não faz,

na real, até o 10g não fazia, só se comecou a fazer...
emer_rosa
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 29
Registrado em: Sáb, 28 Ago 2010 10:45 am
Localização: Torres-RS
Emerson E. Rosa

Estou passando por esse mesmo problema, até quinta passada tava funcionando perfeito meu envio de emails pelo Yahoo, usando a porta 25, mais do nada parou de funcionar, da o seguinte erro:

Selecionar tudo

ORA-29279: erro permanente de SMTP: 501 Syntax error in arguments
ORA-06512: em "SYS.UTL_SMTP", line 29
ORA-06512: em "SYS.UTL_SMTP", line 110
ORA-06512: em "SYS.UTL_SMTP", line 233
ORA-06512: em "SEND_MAIL", line 24
ORA-06512: em line 2
Uso o ORACLE 11g, já vasculhei a net, o mais estranho é que funcionou por meses, o Yahoo deve ter trocado alguma coisa, o email da empresa é do Terra, e usa a por 587, essa não tem jeito de funciona também pois o Oracle não tem suporte a SSL, ai da o seguinte erro com a porta 587:

Selecionar tudo

ORA-29279: erro permanente de SMTP: 501 5.1.7 Bad sender address syntax
ORA-06512: em "SYS.UTL_SMTP", line 29
ORA-06512: em "SYS.UTL_SMTP", line 110
ORA-06512: em "SYS.UTL_SMTP", line 233
ORA-06512: em "SEND_MAIL", line 24
ORA-06512: em line 2
Segue minha Procedure:

Selecionar tudo

CREATE OR REPLACE PROCEDURE "SEND_MAIL"
(
TO_NAME VARCHAR2,
SUBJECT VARCHAR2,
MESSAGE VARCHAR2
)
IS
  L_BODY        VARCHAR2(32767);
  L_MAILHOST    VARCHAR2(64) := 'smtp.tsq.terra.com.br';
  P_USERNAME_   VARCHAR2(50) := 'usuario';
  P_PASSWORD_   VARCHAR2(50) := 'senha';
  L_DE          VARCHAR2(64) := 'Remetente';
  L_FROM        VARCHAR2(64) := 'email';
  L_MAIL_CONN   UTL_SMTP.CONNECTION;

BEGIN
  L_MAIL_CONN := UTL_SMTP.OPEN_CONNECTION(L_MAILHOST,587);
  UTL_SMTP.HELO(L_MAIL_CONN, L_MAILHOST);
  UTL_SMTP.COMMAND (L_MAIL_CONN, 'AUTH LOGIN');
  UTL_SMTP.COMMAND (L_MAIL_CONN, UTL_RAW.CAST_TO_VARCHAR2(
  UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_USERNAME_))));
  UTL_SMTP.COMMAND (L_MAIL_CONN, UTL_RAW.CAST_TO_VARCHAR2(
  UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_PASSWORD_))));
  UTL_SMTP.MAIL(L_MAIL_CONN, L_FROM);
  UTL_SMTP.RCPT(L_MAIL_CONN, TO_NAME);

  UTL_SMTP.OPEN_DATA(L_MAIL_CONN);

  UTL_SMTP.WRITE_RAW_DATA( L_MAIL_CONN, UTL_RAW.CAST_TO_RAW('FROM:'    ||L_DE||'<'|| L_FROM|| '>' || UTL_TCP.CRLF)); 
  UTL_SMTP.WRITE_RAW_DATA( L_MAIL_CONN, UTL_RAW.CAST_TO_RAW('TO:'      ||TO_NAME||UTL_TCP.CRLF)); 
  UTL_SMTP.WRITE_RAW_DATA( L_MAIL_CONN, UTL_RAW.CAST_TO_RAW('SUBJECT:' ||SUBJECT||UTL_TCP.CRLF)); 
  UTL_SMTP.WRITE_RAW_DATA( L_MAIL_CONN, UTL_RAW.CAST_TO_RAW('CONTENT-TYPE: TEXT/HTML; CHARSET=ISO-8859-1'||UTL_TCP.CRLF)); 
  UTL_SMTP.WRITE_DATA(L_MAIL_CONN, ' '||UTL_TCP.CRLF); 
   
  UTL_SMTP.WRITE_RAW_DATA(L_MAIL_CONN, UTL_RAW.CAST_TO_RAW(UTL_TCP.CRLF||MESSAGE)); 
  

  UTL_SMTP.CLOSE_DATA(L_MAIL_CONN);

  UTL_SMTP.QUIT(L_MAIL_CONN);
END;
Eu estava usando do Yahoo, com a porta 25 e tava funfando, agora nada.

Se alguém souber ajudar ai eu agradeço, achei umas soluções em JAVA, mais não entendo BulhuFas de Java, ai complicou.....
Responder
  • Informação