2012-11-29 75 views
0

我使用PHPMailer發送HTML電子郵件。在首先調用ob_start之後,我首先使用HTML和PHP變量設置電子郵件的HTML正文。PHPMailer不發送電子郵件 - 我是否缺少一些簡單的東西?

這裏是我的代碼:

<?php 

ob_start(); 
?> 

..... a bunch of VALID HTML 

<? 
$body = ob_get_contents(); 

require_once('class.phpmailer.php'); 

// Send to Me 
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch 
$mail->IsSendmail(); // telling the class to use SendMail transport 

try { 
    $mail->AddReplyTo('[email protected]', 'Company Name'); 
    $mail->AddAddress('[email protected]', 'My Name'); 
    $mail->SetFrom('[email protected]', 'Company Name'); 
    $mail->Subject = "Contact Form Confirmation"; 
    $mail->AltBody = "This is a contact form submitted through the main website."; 
    $mail->WordWrap = 50; // set word wrap 
    $mail->Body = $body; 
    $mail->IsHTML(true); // send as HTML 

    $mail->Send(); // Try to send email 

    } catch (phpmailerException $e) { 
     echo $e->errorMessage(); //Pretty error messages from PHPMailer 
    } catch (Exception $e) { 
     echo $e->getMessage(); //Boring error messages from anything else! 
} 
// end try 

出於某種原因,這條線:

$mail->Body = $body; 

導致郵件無法發送。如果我將其替換爲:

$mail->Body = "This is a test email."; 

電子郵件發送完美。

如果我的HTML包含在$body只是一個有效的CSS頁面,並且沒有Javascript或任何東西,爲什麼不發送電子郵件?

是否有另一種方法可以做到這一點?請幫忙!!

+0

var_dump($ body)。它可能已經被重置了一半(不知道包含什麼內容)。 –

+0

好主意!我可以把它放在哪裏,看看發生了什麼? – adamdehaven

+0

是否引發任何異常?如果是這樣,那麼這條消息會說什麼? – scriptin

回答

0

原因是某些原因,如果電子郵件中包含傳真號碼,則不會發送電子郵件。完全奇怪。我測試了我的整個標記,並且在僅刪除了一個10位數的電話號碼後,電子郵件終於完成了。我不是新手 - 從字面上看,這是我刪除的唯一文本,並且電子郵件發送得很好。

有沒有人看到這之前?