Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guarnieri

Envio de e-mail em HTML

Recommended Posts

Boa noite Galera,

 

Estou desenvolvendo uma procedure para enviar diariamente uma lista de criticas de um processo.

 

A questão é que monto uma tabela em HTML e quando mando por e-mail via UTL_SMTP, vem o caracter "!" aleatoriamente na minha tabela HTML podendo até quebrar o código.

 

Segue o trecho do código onde monto o HTML:

 


 

    V_MESSAGE_EMAIL := '';

        V_MESSAGE_EMAIL := 'Content-Type: text/html;  charset=utf-8';        
        
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || 'MIME-Version: 1.0' || utl_tcp.CRLF;
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<!DOCTYPE html>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<html>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<head>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</head>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<body style="font-family: ''Segoe UI''">';
        --
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<table border="1">';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<tr>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> DOC </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> CLIENTE </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> FORNEC </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> PRODUTO </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> COLABORADOR </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td> MENSAGEM </td>';
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</tr>';
        --




        FOR REG_ERROR IN (SELECT * FROM TABELA V) LOOP        
        
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<tr>';
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' ||                                    TO_CHAR(REG_ERROR.CONTRACT_ID, '0000') || '</td>';       
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' || TO_CHAR(TO_NUMBER(REG_ERROR.CUSTOMER),'0000000') || '</td>';      
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' || TO_CHAR(TO_NUMBER(REG_ERROR.VENDOR) ,'000000') || '</td>';
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' || REG_ERROR.ITEM || '</td>';
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' || REG_ERROR.USER || '</td>';
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '<td>' || REG_ERROR.MESSAGE || '</td>';
          V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</tr>';
        END LOOP;        
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</table>';  
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</body>'; 
        V_MESSAGE_EMAIL := V_MESSAGE_EMAIL || '</html>';

 

Montado meu e-mail, eu passo para outra proc enviar o e-mail:

 

PROCEDURE SEND_MAIL (p_FROM_MAIL  IN VARCHAR2,

                                            p_TO_MAIL    IN VARCHAR2,
                                            p_SUBJECT    IN VARCHAR2,
                                            p_MESSAGE    IN VARCHAR2) AS


  l_mailhost  VARCHAR2(64) := '127.0.0.1';
  l_from      VARCHAR2(64) := p_FROM_MAIL;
  l_to        VARCHAR2(1000) := p_TO_MAIL;
  l_mail_conn UTL_SMTP.connection;


BEGIN
  l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
  UTL_SMTP.helo(l_mail_conn, l_mailhost);
  
  UTL_SMTP.mail(l_mail_conn, l_from);
  UTL_SMTP.rcpt(l_mail_conn, l_to);
  UTL_SMTP.open_data(l_mail_conn);
  UTL_SMTP.write_data(l_mail_conn, 'From :' || l_from || utl_tcp.CRLF);
  UTL_SMTP.write_data(l_mail_conn, 'Subject :' || p_SUBJECT || utl_tcp.CRLF);
  UTL_SMTP.write_data(l_mail_conn, 'To :' || l_to || utl_tcp.CRLF);
  UTL_SMTP.write_data(l_mail_conn,  p_MESSAGE || utl_tcp.CRLF);
  UTL_SMTP.write_data(l_mail_conn, '' || utl_tcp.CRLF);
  UTL_SMTP.write_data(l_mail_conn, '');
  UTL_SMTP.close_data(l_mail_conn);
  UTL_SMTP.quit(l_mail_conn);


END SEND_MAIL;

 

 

 

 

Olhem o resultado no e-mail:

 

http://imageshack.com/a/img40/2774/y1i7.jpg

 

 

Alguém sabe o porque disso? oO

 

Valeww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso rotina de email no Oracle mas sempre mando texto puro.

 

Não seria caracteres inválidos vindo na parte variável ?

 

Um REPLACE ou TRANSLATE poderia resolver (sendo isto) ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso rotina de email no Oracle mas sempre mando texto puro.

 

Não seria caracteres inválidos vindo na parte variável ?

 

Um REPLACE ou TRANSLATE poderia resolver (sendo isto) ?

 

Tentei usar Replace mas sem sucesso.

 

Inicialmente pensei nisso, mas o caracter "!" não vem do texto.

 

Tanto é que no print de exemplo da table eu populei com texto hard code pra mostrar a vocês e veio o bendito ^^ .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei usar Replace mas sem sucesso.

 

Inicialmente pensei nisso, mas o caracter "!" não vem do texto.

 

Tanto é que no print de exemplo da table eu populei com texto hard code pra mostrar a vocês e veio o bendito ^^ .

 

 

 

SEND_MAIL (P_FROM_MAIL => 'remetente@bol.com.br'

,P_TO_MAIL => 'destinatario@bol.com.br'

,P_SUBJECT => ' titulo'

,P_MESSAGE => V_MESSAGE_EMAIL);

Compartilhar este post


Link para o post
Compartilhar em outros sites

V_MESSAGE_EMAIL, o problema deve estar na montagem desta variável ou objeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.