2016-01-03 119 views
0

我使用PHPMail發送帶有pdf附件的電子郵件。在大多數情況下(時間約90%)的電子郵件發送獲取正確的,但在某些情況下,我不中的情況下知道,電子郵件將顯示如下:使用PHPmailer發送的無法讀取的電子郵件

: 
MIME-Version: 1.0 
Content-Type: multipart/mixed; 
    boundary="b1_a3f9faae87f56d6f3d5b7325ee3fadf5" 


--b1_a3f9faae87f56d6f3d5b7325ee3fadf5 
Content-Type: multipart/alternative; 
    boundary="b2_a3f9faae87f56d6f3d5b7325ee3fadf5" 

--b2_a3f9faae87f56d6f3d5b7325ee3fadf5 
Content-Type: text/plain; charset = "iso-8859-1" 
Content-Transfer-Encoding: 8bit 


Schakel HTML in om dit bericht goed te kunnen lezen 




--b2_a3f9faae87f56d6f3d5b7325ee3fadf5 
Content-Type: text/html; charset = "iso-8859-1" 
Content-Transfer-Encoding: 8bit 





    <br><br> 
       <table cellpadding='0'> 
        <tr> 
         <td>&nbsp;</td> 
         <td width='130'><img src='http://www.emdr-lightbar.nl/images/psytec_mail.png' width='108' height='42' alt='Psytec'/></td> 
         <td><b>FACTUUR</b></td> 
        </tr> 
        <tr> 
         <td style='border-top: 0px;border-bottom: 0px;'>&nbsp;</td> 
         <td style='border-bottom: 1px solid #ededed !important;' colspan='2'></td> 
        </tr> 
        <tr> 
         <td width='20'>&nbsp;</td> 
         <td colspan='2'><font face='Arial, Helvetica, sans-serif' size='2'> 
          <br><br> 
          Geachte mevrouw,<br><br> 
          Uw betaling is in goede orde ontvangen. Dank u wel. Uw factuur vindt u in de bijlage van deze email. 
          <br><br> 
          Heeft u nog vragen? Neemt u dan contact op via de klantenservice</a>. 
          <br><br> 
          Uw ordernummer: 151<br><br> 
          Met vriendelijke groet,<br> 
          Fred Verschuur 
          <br><br><br> 
          </font> 
         </td> 
        <tr> 
         <td style='border-top: 0px;border-bottom: 0px;'>&nbsp;</td> 
         <td style='border-bottom: 1px solid #ededed !important; 
     color: #757575;' colspan='2'></td> 
        </tr> 
       </table> 
       <br><br><br><br><br><br> 




--b2_a3f9faae87f56d6f3d5b7325ee3fadf5-- 
--b1_a3f9faae87f56d6f3d5b7325ee3fadf5 
Content-Type: application/pdf; name="FA2015161.pdf" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename="FA2015161.pdf" 

JVBERi0xLjQKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy 
IDAgUgovQW5ub3RzIFs8PC9UeXBlIC9Bbm5vdCAvU3VidHlwZSAvTGluayAvUmVjdCBbMjkwLjcz 
IDI0MS44OSA0MDQuMjUgMjMxLjg5XSAvQm9yZGVyIFswIDAgMF0gL0EgPDwvUyAvVVJJIC9VUkkg 
KG1haWx0bzprbGFudGVuc2VydmljZUBwc3l0ZWMubmwpPj4+Pl0KL0dyb3VwIDw8L1R5cGUgL0dy 
b3VwIC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0I+PgovQ29udGVudHMgNCAwIFI+Pgpl 

我用這個代碼:

<?PHP 

function mailTo($to, $subject, $fromname, $message, $headers, $attachment, $attname) { 
    global $mailer_user, $mailer_pass; 
    require_once('class.phpmailer.php'); 
    $mail  = new PHPMailer(); 

    $body   = preg_replace('/\[\]/',"",$message); 

    $mail->IsSMTP(); 
    $mail->Host    = "smpt.server.nl"; 

    $mail->SMTPAuth  = true; 
    $mail->Host    = "smpt.server.nl"; 
    $mail->Port    = 26; 
    $mail->Username  = "username"; 
    $mail->Password  = "password"; 

    $mail->IsHTML(true); 
    $mail->AltBody = "Schakel HTML in om dit bericht goed te kunnen lezen"; 

    $mail->AddReplyTo('[email protected]', 'Name'); 
    $mail->SetFrom('[email protected]', 'Name'); 
    $mail->FromName  = $fromname; 
    $mail->AddBCC('[email protected]'); 

    $mail->Subject  = $subject; 
    $mail->Body  = $body; 

    $mail->addCustomHeader($headers); 

    $address = $to; 
    $mail->AddAddress($address, $address); 

    if ($attachment) $mail->AddStringAttachment($attachment, $attname, $encoding = 'base64', $type = 'application/pdf'); 

    if(!$mail->Send()) { 
     return false; 
    } else { 
     return true; 
    } 
} 


?> 

我該如何解決這個問題?

+0

Chk yur html打開關閉標籤。 – devpro

+0

您正在使用一個漂亮的舊版本的PHPMailer。 [更新](https://github.com/PHPMailer/PHPMailer)。 – Synchro

回答

-1

身體後使用isHTML()。它在過去爲我工作。

$mail->Body = $body; 
$mail->IsHTML(true); 
+0

@fredv伴侶你試過嗎? – devpro

+0

我試過了,它能工作,但在90%的情況下它已經工作,所以我會繼續測試:-) – FredV

+0

這段代碼沒有任何區別。 – Synchro

0

一定是某種問題的郵件標題中。

$mail->addCustomHeader($headers); 

裏面有什麼$headers

而如果你刪除該行來測試呢?

更新

你的頭幾乎肯定要破裂。例如,顯示的電子郵件(正文)在整行上以單個:開頭。所以,在此之前的某個地方有一個問題,可能是由於$headers$headers是空的或未定義的,正如你所說的。其餘的標題被推入郵件正文,打破所有MIME格式。

因此,我將首先刪除$mail->addCustomHeader($headers);以測試問題是否在$headers之內。

+0

嗯,我看到$頭沒有定義。添加一些編碼參數? – FredV

+0

@FredV - 它是你函數中的一個參數。如果不需要,只需刪除'$ mail-> addCustomHeader($ headers);'? –

+0

謝謝!到現在爲止它似乎是固定的,但我繼續測試! – FredV