HTML разрывается при отправке по электронной почте - PullRequest
2 голосов
/ 23 октября 2019

У меня есть транзакционное письмо с таблицей. Если я создаю электронную почту и визуализирую ее в Chrome, все становится чистым.

Однако при отправке добавляется пробел между "<" </strong> и td . .. .. становится .. .. И это разбивает таблицу HTML. Я не знаю, откуда это.

У кого-нибудь есть идеи, как решить эту проблему, пожалуйста? Проблема появляется во всех почтовых браузерах (outlook, gmail, yahoo ...)

Спасибо, Ура,

Вот HTML

<table class="module" role="module" data-type="text" border="0"
    cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed;">
    <tr>
        <td style="line-height:22px;text-align:inherit;" height="100%" valign="top">
            <div>
                <table class="center" border="0" cellspacing="0" 
                    cellpadding="0" style="text-align:center; width:100%;">
                    <tr style="border-bottom: solid thin;">
                        <th style="font-weight: 300; align:center;">Date</th>
                        <th style="font-weight: 300; align:center;">Amount</th> 
                        <th style="font-weight: 300; align:center;">Type</th> 
                        <th style="font-weight: 300; align:center;">Méthode</th>
                    </tr>
                    <tr style="background-color: #fafafa;">
                        <td align="center">22 Oct. 19</td> 
                        <td align="center">-5 €</td> 
                        <td align="center">Confirmation</td> 
                        <td align="center">CB</td> 
                    </tr> 
                    <tr style="background-color: #fafafa;"> 
                        <td align="center">25 Oct. 19</td> 
                        <td align="center">-195 €</td> 
                        <td align="center">Payment</td> 
                        <td align="center">CB</td> 
                    </tr> 
                    <tr style="background-color: #fafafa;"> 
                        <td align="center">25 Nov. 19</td> 
                        <td align="center">-200 €</td> 
                        <td align="center">Payment</td> 
                        <td align="center">CB</td> 
                    </tr> 
                    <tr style="background-color: #fafafa;"> 
                        <td align="center">25 Déc. 19</td> 
                        <td align="center">-200 €</td> 
                        <td align="center">Payment</td> 
                        <td align="center">CB</td> 
                    </tr> 
                    <tr style="background-color: #fafafa;"> 
                        <td align="center">28 Janv. 20</td> 
                        <td align="center">0 €</td> 
                        <td align="center">Fees</td> 
                        <td align="center">Déduit</td> 
                    </tr> 
                </table>
            </div>
        </td>   
    </tr>
</table>

Я отправляюэлектронная почта через Oracle PL / SQL. Вот мой код:

PROCEDURE Send_Mail_Via_SMTP(EmailAddress IN VARCHAR2, MailFrom_ IN VARCHAR2, DisplayName_ in varchar2, Subject_ IN VARCHAR2, MessageInHTML  IN clob DEFAULT NULL, BCC_ in varchar2) is 
      l_mail_conn   UTL_SMTP.connection;
      l_boundary    VARCHAR2(50) := '----=*#abc1234321cba#*=';
      p_smtp_host VARCHAR2(50);
      p_smtp_port NUMBER;     
    BEGIN                                  
      p_smtp_host := 'xxxx';
      p_smtp_port := xxxx;      

      -- Open the connection
      l_mail_conn := UTL_SMTP.open_connection(p_smtp_host, p_smtp_port);

      -- SMTP authentication
      UTL_SMTP.AUTH(l_mail_conn,'apikey','xxxx', 'xxx');            

      UTL_SMTP.helo(l_mail_conn, p_smtp_host);
      UTL_SMTP.mail(l_mail_conn, MailFrom_);

      -- Add email
      UTL_SMTP.rcpt(l_mail_conn, EmailAddress);        

      -- Open reader to write data
      UTL_SMTP.open_data(l_mail_conn);

      -- Date
      UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);

      -- Mail to
      UTL_SMTP.write_data(l_mail_conn, 'To: ' || EmailAddress || UTL_TCP.crlf);   

      -- Mail From 
      UTL_SMTP.write_raw_data(l_mail_conn, utl_raw.cast_to_raw('From: ' || '"' || DisplayName_ || '"<'|| MailFrom_ || '>'));
      UTL_SMTP.WRITE_DATA(l_mail_conn, UTL_TCP.CRLF);                 

      -- Subject
      UTL_SMTP.write_raw_data(l_mail_conn, utl_raw.cast_to_raw('Subject:' || Subject_));
      UTL_SMTP.WRITE_DATA(l_mail_conn, UTL_TCP.CRLF);      

      -- Reply to
      UTL_SMTP.write_data(l_mail_conn, 'Reply-To: ' || MailFrom_ || UTL_TCP.crlf);

      -- Mime Version
      UTL_SMTP.write_data(l_mail_conn, 'MIME-Version: 1.0' || UTL_TCP.crlf);

      -- Content Type
      UTL_SMTP.write_data(l_mail_conn, 'Content-Type: multipart/alternative; boundary="' || l_boundary || '"' || UTL_TCP.crlf || UTL_TCP.crlf);  

      -- Message html
      UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
      UTL_SMTP.write_data(l_mail_conn, 'Content-Type: text/html; charset="UTF-8"' || UTL_TCP.crlf || UTL_TCP.crlf);     
      UTL_SMTP.write_raw_data(l_mail_conn, utl_raw.cast_to_raw(MessageInHTML));                    
      UTL_SMTP.write_data(l_mail_conn, UTL_TCP.crlf || UTL_TCP.crlf);     

      UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || '--' || UTL_TCP.crlf);
      UTL_SMTP.close_data(l_mail_conn);

      UTL_SMTP.quit(l_mail_conn);
    end;
...