GARANTIR DESCONTO

Fórum Enviar e-mail pelo Oracle #28385

27/03/2006

0

Ola Pessoal,

Tenho um procedure de envio de [b:41126102ba]e-mail pelo oracle[/b:41126102ba], a qual utiliza a packge [b:41126102ba]UTL_SMTP[/b:41126102ba], Porém encontrei um problema para o envio de e-mail, ou seja, quando a mensagem possui ´[b:41126102ba]dois pontos[/b:41126102ba]´ o e-mail é enviado para o destinatario, porém a mensagem não vai devido ao uso dos [b:41126102ba]dois pontos[/b:41126102ba] no corpo da mensagem.

Por exemplo era enviado um e-mail utilizando um horario na mensagem.
Exemplo:


.
.
.
[b:41126102ba]Assunto[/b:41126102ba]: Aula de hoje

[b:41126102ba]Mensagem[/b:41126102ba]: Queridos alunos, hoje apartir das [b:41126102ba]10:00 [/b:41126102ba]horas não hávera aula.

.
.
.

Como no exemplo acima vc pode verificar q existe dois pontos na mensagem, e é devido a isto que a mensagem acaba não indo junto com o e-mail.

Gostaria de saber se alguem pode nos ajudar?

vlw :o


Fernando Piccini

Fernando Piccini

Responder

Posts

27/03/2006

Rosterne

Ex:

Procedure SEND_EMAIL:

CREATE OR REPLACE
PROCEDURE ´SEND_EMAIL´ (from_address IN VARCHAR2,
to_address IN VARCHAR2,
subject IN VARCHAR2,
body IN VARCHAR2)
is
c utl_smtp.connection;
l_pos NUMBER := 1;
l_separators VARCHAR2(1) := ´,´;
recipient VARCHAR2(200);

-- set these for your environment
v_smtp_server VARCHAR2(100) := ´smtpout.cobox.com.br´;
v_smtp_domain VARCHAR2(80) := ´cobox.com.br´;

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(v_smtp_server);
utl_smtp.helo(c, v_smtp_domain);
utl_smtp.mail(c, from_address);

-- use get token to get all to recipients (separated by commas)
LOOP
recipient := mdw_util.Get_Token(to_address, l_pos, l_separators);

IF recipient IS NULL THEN
EXIT;
ELSE
utl_smtp.rcpt(c, recipient);
END IF;
END LOOP;
-- CC utl_smtp.rcpt( conn, ´cc:user1@us.oracle.com´ ); have to loop through these too
-- BCC utl_smtp.rcpt( conn, ´bcc:user1@us.oracle.com´ ); have to loop through these too
utl_smtp.open_data(c);
send_header(´From´, ´´´ || from_address || ´´ <´ || from_address || ´>´);
send_header(´To´, ´´´ || to_address || ´´ <´ || translate(to_address,´,´,´ ´) || ´>´);
send_header(´Subject´, subject);

--When assembling the body, RFC 821 requires that the lines to be terminated
-- by <CR><LF> which is a character 13 and character 10 (accomplished in
-- PL/SQL by using: CHR(13)||CHAR(10)).

utl_smtp.write_data(c, utl_tcp.CRLF || body || utl_tcp.CRLF );
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,
´Failed to send mail due to the following error: ´ || sqlerrm);
END;

depois execute a procedure:

begin
exec send_email(´EMAIL DE ENVIO´, ´EMAIL DA PESSOA´,
´Aula de hoje´, ´Queridos alunos, hoje apartir das 10:00 horas nπo hßvera aula.´ );
end;

Espero ter ajudado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar