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]

Responder a