Pessoal,
Na empresa temos uma procedure para envio de e-mail, que está aí embaixo.
CREATE OR REPLACE PROCEDURE Enviar_Email (
assunto varchar2,
msg varchar2,
remetente_o varchar2, -- o e-mail sera enviado por este endereco
remetente_f varchar2, -- o endereco que aparecera como remetente sera esse
destinatario varchar2,
copia varchar2 ) -- e-mail que ira receber a copia
is
host varchar2(40);
mensagem varchar2(32767);
crlf varchar2(2);
boundary varchar2(256);
-- Abre conex?o SMTP
CONEXAO UTL_SMTP.CONNECTION;
BEGIN
host := '192.168.0.10';
crlf := chr(13) || chr(10);
boundary := 'CES.Boundary.DACA587499938898';
-- Abre conex?o com um Servidor SMTP(Simple Mail Transfer Protocol), porta
padr?o SMTP e 25
CONEXAO := utl_smtp.open_connection (host,25);
-- As 3 linhas abaixo e caso o servidor precise de autenticac?o
-- A segunda linha e o usuario e 3? e a senha
UTL_SMTP.HELO(CONEXAO,host);
utl_smtp.command (CONEXAO, 'AUTH LOGIN');
utl_smtp.command (CONEXAO,
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(('usuario@dominio
')))));
utl_smtp.command (CONEXAO,
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(('senha')))));
UTL_SMTP.HELO (CONEXAO, host);
-- Define o remetente e o destinatario do e-mail de acordo com os parametros
passados
UTL_SMTP.MAIL (CONEXAO, ('<' || remetente_o || '>'));
UTL_SMTP.RCPT (CONEXAO, ('<' || destinatario || '>'));
if copia is not null then
UTL_SMTP.RCPT (CONEXAO, ('<' || copia || '>'));
end if;
-- Abre a transferencia de dados para o e-mail
UTL_SMTP.OPEN_DATA(CONEXAO);
-- Escreve o cabecalho da mensagem
mensagem := 'Date: ' || TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss') || crlf ||
'From: ' || remetente_f || crlf ||
'Subject: ' || assunto || crlf ||
'To: ' || destinatario || crlf ||
'Cc: ' || copia || crlf;
--mensagem := mensagem || 'Mime-Version: 1.0' || crlf ||
-- 'Content-Type: multipart/mixed; boundary="' || boundary ||
'"' || crlf || crlf;
--utl_smtp.write_data(CONEXAO,mensagem);
-- Escreve o conteudo do e-mail
utl_smtp.write_data(CONEXAO,mensagem);
utl_smtp.write_data(CONEXAO,msg);
-- Fecha o data e fecha a conex?o com o servidor smtp
UTL_SMTP.CLOSE_DATA(CONEXAO);
UTL_SMTP.QUIT (CONEXAO);
Exception
WHEN OTHERS THEN
utl_smtp.quit (conexao);
raise_application_error(-20011,'N?o foi possivel enviar o e-mail devido ao
seguinte erro: ' || sqlerrm);
END Enviar_Email;
/
Ela funciona perfeitamente, com exceção de um pequeno detalhe: se na
montagem do corpo da mensagem eu colocar algo do tipo
MSG := 'Data:' || to_char(sysdate,'dd/mm/yyyy hh24:mi') || CHR(10) ||
CHR(13) || 'funcionou';
Só irá ser enviada a segunda linha. A primeira, onde deveria aparecer a data
não vai.
Isso ocorre tanto com o Oracle 9 Enterprise, como com o 10g Enterprise.
Abraço,
Roberto
[As partes desta mensagem que não continham texto foram removidas]