Guarnieri 0 Denunciar post Postado Novembro 12, 2013 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
Motta 645 Denunciar post Postado Novembro 12, 2013 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
Guarnieri 0 Denunciar post Postado Novembro 12, 2013 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
Motta 645 Denunciar post Postado Novembro 13, 2013 Como a sp é chamada ? Compartilhar este post Link para o post Compartilhar em outros sites
Guarnieri 0 Denunciar post Postado Novembro 13, 2013 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
Motta 645 Denunciar post Postado Novembro 13, 2013 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