UTL_SMTP envia email com problema de acentuação

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Desenvolvedor
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Qua, 26 Dez 2007 12:40 pm
Localização: SP

Olá pessoal,

Tenho uma rotina de enviar email que funciona mas ao receber a msg pelo outlook percebo que os caractéres de acentuação estão desconfigurados, isso é um problema do ORACLE.

Obrigado pela ajuda..

Versão do banco Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
Rotina:

Selecionar tudo

PROCEDURE ENVIA_EMAIL (
                     p_mailhost   IN  VARCHAR2,
                     p_sender     IN  VARCHAR2,
                     p_recipient  IN  VARCHAR2,
                     p_subject    IN  VARCHAR2,
                     p_message    IN  VARCHAR2) AS
--
         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;

Exemplo: Email recebido
Extrato de Vales em 17/09/2008 09:08 Por favor n?o responder email
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, você tem 2 saídas:

1)Criar uma função (como essa abaixo), que elimina a acentuação:

Selecionar tudo

FUNCTION FUN_TIRA_ACENTUACAO (P_STRING IN VARCHAR2)
 RETURN VARCHAR2 IS
--
 V_STRING_RETURN VARCHAR2(3000);
--
BEGIN
  V_STRING_RETURN := TRANSLATE( P_STRING,
				                    'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü',
                                'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu');
  --
  RETURN V_STRING_RETURN;
  --
END;
ou

2) Enviar teu e-mail no formato HTML, mudando o content-type do teu envio para:

Selecionar tudo

"text/html" (send_header('Content-Type','text/html; charset=iso-8859-1'); )
e traduzindo sua acentuação, no formato do item 1, conforme este link:

http://www.lsi.usp.br/~help/html/iso.html

Qualquer coisa manda pra gente.
Desenvolvedor
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Qua, 26 Dez 2007 12:40 pm
Localização: SP

Trevisolli ,

A dica numr 1 foi mais rápido e fácil de implementar meu código, aproveitando você sabe se existe a possibilidade de enviar anexo no email UTILIZANDO UTL_SMTP.


Exemplo: (Extensão ZIP / TXT / AVI) e outras.....
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, tem sim cara.
Se não me falha a memória, aqui no fórum mesmo deve ter um exemplo.

Dá uma procurada aqui, por "e-mail" ou "mail", que vai encontrar exemplos interessantes meu velho.

Qualquer coisa, manda pra gente.
Responder
  • Informação
  • Quem está online

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