Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Motta

email

Recommended Posts

estou fazendo o seguinte :

 

CREATE OR REPLACE PROCEDURE TESTE_ENVIA_EMAIL ( remetente     varchar2 ,
                        destinatario  varchar2 ,
                        assunto       varchar2 ,
                        mensagem      varchar2 ) as
   c utl_smtp.connection;

   username varchar2(256) := 'usuario';
   password varchar2(256) := 'senha';

   PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS
   BEGIN
     utl_smtp.write_data(c, name || ': ' || header || utl_tcp.CRLF);
   END;

   BEGIN
     c := utl_smtp.open_connection('99.99.99.99');--informo aqui o n ip
     utl_smtp.helo(c, 'minhaempresa.com.br'); -- dominio

     utl_smtp.command(c, 'AUTH LOGIN');
     utl_smtp.command(c, utl_encode.base64_encode (utl_raw.cast_to_raw(username)));
     utl_smtp.command(c, utl_encode.base64_encode (utl_raw.cast_to_raw(password))); 

     utl_smtp.mail(c, remetente);
     utl_smtp.rcpt(c, destinatario);
     utl_smtp.open_data(c);
     send_header('From'    , remetente    );
     send_header('To'      , destinatario );
     send_header('Subject' , assunto      );
     utl_smtp.write_data(c, utl_tcp.CRLF || mensagem);
     utl_smtp.close_data(c);
     utl_smtp.quit(c);
   EXCEPTION
     WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
       utl_smtp.quit(c);
       raise_application_error(-20000,
                               'A tentativa de enviar o e-mail gerou o seguinte erro: ' || sqlerrm);
     WHEN OTHERS THEN
       RAISE;
   END;
/

 

quando envio tomo o seguinte erro :

 

 

1 1 ORA-20000: A tentativa de enviar o e-mail gerou o seguinte erro: ORA-29279: SMTP permanent error: 535 Error: authentication failed

ORA-06512: at "SAUDE.TESTE_ENVIA_EMAIL", line 35

ORA-06512: at line 2

 

Alguém tem alguma luz ?

 

obs : O servidor requer autenticação

 

obs 2 : num exemplo original que peguei era

 

utl_smtp.command(c, demo_base64.encode(utl_raw.cast_to_raw(username)));

utl_smtp.command(c, demo_base64.encode(utl_raw.cast_to_raw(password)));

 

mas não vi esta function em outra página vi a dica para mudar

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, Pra mim tá cheirando problemas realmente na autenticação. Tira a conversão da base 64 do seu scripts, e tente executar novamente. Uma outra alternativa, faça um procedure mais simples, igual a uma coluna que escrevi no site da iMasters, tente executar ela. Caso execute voltaremos ao seu script. Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

here you are ....

CREATE OR REPLACE PROCEDURE ENVIA_EMAIL(ds_email_origem_w varchar2,
                                        ds_email_destino_p varchar2,
                                        ds_assunto       varchar2,
                                        ds_mensagem_p varchar2) is


  ds_smtp_w varchar2(20) := 'end ip';--endereco ip servidor email
  ds_user_id_w varchar2(50) := 'usuario';
  ds_senha_smtp_w varchar2(50) := 'senha';
  /* Abre conexão SMTP e HTTP */
  CONEXAO UTL_SMTP.CONNECTION;
BEGIN
  /* Abre conexão com um Servidor SMTP(Simple Mail Transfer Protocol), porta padrão SMTP é 25 */
  CONEXAO := utl_smtp.open_connection (ds_smtp_w,25);
  UTL_SMTP.HELO (CONEXAO, ds_smtp_w); /* Endereço do servidor de SMTP */
  utl_smtp.command (CONEXAO, 'AUTH LOGIN');
  utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_user_id_w)))));
  utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_senha_smtp_w)))));
  UTL_SMTP.MAIL (CONEXAO, ('<' || ds_email_origem_w || '>')); /* E-mail de quem está mandando */
  UTL_SMTP.RCPT (CONEXAO, ('<' || ds_email_destino_p || '>')); /* Para quem vou mandar */
  UTL_SMTP.OPEN_DATA(CONEXAO);
  UTL_SMTP.WRITE_DATA(CONEXAO,'Subject'|| ': ' || ds_assunto || utl_tcp.CRLF);
  UTL_SMTP.WRITE_DATA(CONEXAO, utl_tcp.CRLF || ds_mensagem_p);
  UTL_SMTP.CLOSE_DATA(CONEXAO);
  UTL_SMTP.QUIT (CONEXAO);
Exception
  WHEN OTHERS THEN
    utl_smtp.quit (conexao);
    raise_application_error(-20011,'Não foi possível enviar o e-mail devido ao seguinte erro: ' || sqlerrm);
END ENVIA_EMAIL;
/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como que eu posso aplicar o codigo ai (para enviar via smtp) neste script aqui

 

===============///===================

 

// o que eu ja tenho //

 

$headers = "MIME-Version: 1.0\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\n";

$headers .= "From: FARMAPOLIS <origem@dominio.com.br>\r\nContent-type: text/html\n\n";

$headers .= "X-Priority: 1\n";

 

$subject = "Avaliação do Trabalho Cientifico";

mail($to,$subject,$body,$headers);

// o que esta com smtp aplicado///

 

// eu quero aplicar isso ai abaixo neste de sima tem como ????

 

 

here you are ....

CREATE OR REPLACE PROCEDURE ENVIA_EMAIL(ds_email_origem_w varchar2,                                        ds_email_destino_p varchar2,                                        ds_assunto       varchar2,                                        ds_mensagem_p varchar2) is  ds_smtp_w varchar2(20) := 'end ip';--endereco ip servidor email  ds_user_id_w varchar2(50) := 'usuario';  ds_senha_smtp_w varchar2(50) := 'senha';  /* Abre conexão SMTP e HTTP */  CONEXAO UTL_SMTP.CONNECTION;BEGIN  /* Abre conexão com um Servidor SMTP(Simple Mail Transfer Protocol), porta padrão SMTP é 25 */  CONEXAO := utl_smtp.open_connection (ds_smtp_w,25);  UTL_SMTP.HELO (CONEXAO, ds_smtp_w); /* Endereço do servidor de SMTP */  utl_smtp.command (CONEXAO, 'AUTH LOGIN');  utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_user_id_w)))));  utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_senha_smtp_w)))));  UTL_SMTP.MAIL (CONEXAO, ('<' || ds_email_origem_w || '>')); /* E-mail de quem está mandando */  UTL_SMTP.RCPT (CONEXAO, ('<' || ds_email_destino_p || '>')); /* Para quem vou mandar */  UTL_SMTP.OPEN_DATA(CONEXAO);  UTL_SMTP.WRITE_DATA(CONEXAO,'Subject'|| ': ' || ds_assunto || utl_tcp.CRLF);  UTL_SMTP.WRITE_DATA(CONEXAO, utl_tcp.CRLF || ds_mensagem_p);  UTL_SMTP.CLOSE_DATA(CONEXAO);  UTL_SMTP.QUIT (CONEXAO);Exception  WHEN OTHERS THEN    utl_smtp.quit (conexao);    raise_application_error(-20011,'Não foi possível enviar o e-mail devido ao seguinte erro: ' || sqlerrm);END ENVIA_EMAIL;/

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que eu passei é para ser usado junto com outro.

 

você deve criar esta procedure no seu banco de dados, alterando ela para passar o nº do ip do servidor de mail , um usuario e senha para envio.

 

Em outras rtoinas você vai usar esta procedure para enviar emails.

 

Um exemplo , se não receber o pagamento do cliente envio um email de aviso de cobrança.

 

Nem se em que linguagem está o código que postou. Não sei se posso te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.