Motta 645 Denunciar post Postado Setembro 14, 2005 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
alphamek 2 Denunciar post Postado Setembro 18, 2005 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
Motta 645 Denunciar post Postado Setembro 19, 2005 Rodrigo, consegui outra procedure que funciona. Grato. Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Setembro 20, 2005 BOM BOM! Abraços.... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
pitica 0 Denunciar post Postado Setembro 27, 2005 MotaSe possível, gostaria de ter o código da procedure!Obrigada :) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 27, 2005 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
::MARCOS 0 Denunciar post Postado Setembro 28, 2005 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
Motta 645 Denunciar post Postado Setembro 28, 2005 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