Função UTL_SMTP

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

Fala pessoal... td bem? espero que sim..

sou novo aqui, como todos podem perceber :P

então estou tendo um probleminha ao tentar utilizar a função UTL_SMTP que é utilizada para envio de e-mails...


ao tentar mandar uma mesma mensagem a vários destinatários o FORMS apresenta um erro..

será que alguém poderia me dar uma força...


grato da atenção de cada um de vocês...

té mais ver e forte abraço à todos..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

olá Deathão
Mostra aí como você está fazendo!!!

:-o
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

Clique do Botão:

Selecionar tudo

DECLARE 
	SMTP_EMAIL varchar2(100);
	remetente varchar2(300);
BEGIN
	IF :envia_email.txt_destinatario IS NULL OR :envia_email.txt_assunto IS NULL OR :envia_email.txt_mensagem IS NULL THEN
		message ('Todos os Campos devem ser Preenchidos');
		message ('Todos os Campos devem ser Preenchidos');
		raise form_trigger_failure;
	ELSE
		remetente := 'junior@sgq.com.br';
	  --SMTP_EMAIL := 'smtp.femanet.com.br';
		SELECT SMTP
		INTO SMTP_EMAIL
		FROM email
		WHERE smtp = 'smtp.femanet.com.br';
		envia_mail(SMTP_EMAIL,
							remetente,
							:envia_email.txt_destinatario,
							:envia_email.txt_assunto,
							:envia_email.txt_mensagem);
		:envia_email.txt_destinatario := null;
		:envia_email.txt_assunto := null;
		:envia_email.txt_mensagem := null;
	END IF;
END;
Função:

Selecionar tudo

PROCEDURE envia_mail(p_mailhost  IN VARCHAR2,
                     p_sender    IN VARCHAR2, 
                     p_recipient IN VARCHAR2,
                     p_subject   IN VARCHAR2,
                     p_message   IN VARCHAR2 ) IS

       mail_conn UTL_SMTP.CONNECTION;

       crlf VARCHAR2( 2 ) := CHR( 13 ) || CHR( 10 );
       mesg VARCHAR2( 5000 );
BEGIN
  mail_conn := UTL_SMTP.OPEN_CONNECTION( p_mailhost, 25 );
  mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
         'From: <' || p_sender || '>' || crlf || 
         'Subject: ' || p_subject || crlf || 
         'To: ' || p_recipient  || crlf || ''  || crlf ||  p_message;
  UTL_SMTP.HELO( mail_conn, p_mailhost );
  UTL_SMTP.MAIL( mail_conn, p_sender );
  UTL_SMTP.RCPT( mail_conn, p_recipient);
  UTL_SMTP.DATA( mail_conn, mesg );
  UTL_SMTP.QUIT( mail_conn );
END;
para um e-mail ele funciona belezinha, mas quando eu coloco no text_field, mais de um remetente separado por ";" ele dá um erro no FORMS...


valeu obrigado pela força..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Isso porque o UTL_SMTP não suporta mandar mais que um email por vez...

Acho que você terá que fazer uma rotina aí que divida a string do destinatário. Algo assim: Caso tenha 2 emails separados por ; ele seprara cada um deles e envia um por um...

Outra coisa que você pode fazer é tratar os exceptions:

Selecionar tudo

UTL_SMTP.INVALID_OPERATION
UTL_SMTP.TRANSIENT_ERROR
UTL_SMTP. PERMANENT_ERROR
:-o
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

VIX!!!!!!! mas aí vai ser "DU BOZO" a parada hein!!!! :-o

tem como você me dar uma dica de como fazer esse lance ??

valeus..


esses tratamentos de exptions fazem o que?

valeu denovo DrGori..

pelo jeito tu curte um Heavy hein... :-o o maluquinho aqui não pára de chacoalhar a cabeça.. hahah valeu!!!!!
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

não tem como eu colocar um campo como se fosse

Cc (Com Cópia)?


valeu
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Faça uma pesquisa no forum!!!
Olha o que eu achei:

http://glufke.net/oracle/viewtopic.php? ... %2Amail%2A

Sobre os exceptions, você pode capturar os erros quando dá.
Exemplos:

Selecionar tudo

ORA-29279: SMTP permanent error: 501 5.5.4 Invalid Address
ORA-29279: SMTP permanent error: 550 5.7.1 Unable to relay for mymail@gmail.com
ORA-29278: SMTP transient error: 421 Service not available
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes