2016-07-03 90 views
0

我使用Joomla的集成版本的PHPmailer發送電子郵件。 我已經閱讀this answer,但有些東西不適合我。 AltBody行發生異常,PHP無法到達Send行。發送包含html和文本的電子郵件

通過評論AltBody行,我的郵件的HTML版本被髮送,它工作正常。

我也用來代替身體setBody,因爲身體只是不工作(從進一步閱讀今天做我懷疑那是因爲我用$mail->Body($msg)代替$mail->Body = $msg,而「身體是一個屬性,不是方法」,說馬克B在評論中。)

這與我沒有使用SMTP有關嗎?
這可能是因爲我想分配給AltBody的內容嗎? (它是通過連接使用\ n換行符的幾個字符串構建的變量。)
這是因爲其他原因嗎?

不幸的是,我無法發佈整個php的代碼。我會盡力記住它,我會明天檢查它並逐步糾正它。

$msg = '<p>some html'; 
$msg .= 'some more html. Escaped "apostrophes" like \' used because of language </p>'; 
$txt = "some text,\nusing doublequotes as the delimiter."; 

$mail = JFactory::getMailer(); 
$mail->isHTML(true); 
$mail->CharSet = "text/html; charset=UTF-8;"; 
$mail->setSender('[email protected]'); 
$mail->addRecipient('[email protected]'); 
$mail->setFrom('[email protected]'); 
$mail->setSubject('test mail'); 
$mail->setBody($msg); 
$mail->AltBody($txt); # not working, commenting the line out works. 
$mail->ClearCCs(); 
$mail->ClearBCCs(); 
$mail->AddBCC('[email protected]'); 
$mail->ClearAttachments(); # I know, this is not a cycle. But I'm not sure about injection, better delete it in case someone managed to add it. 
$mail->ClearCustomHeaders(); 
if (empty($honeypot)) { 
    $mail->send(); 
    exit('Mail sent'); 
} 

這畢竟是一個try內,與catch,捕獲異常和附和他們。

+0

你怎麼能指望任何人來調試代碼,如果你不張貼任何?閱讀PHPMailer文檔,瞭解如何設置AltBody – Synchro

+0

@Synchro我設法複製一些。我希望這已經足夠了。 – Zachiel

+0

只需閱讀PHPMailer文檔和代碼。沒有setBody方法; Body和AltBody是屬性,所以只需設置它們。您無需致電clearAttachments。 – Synchro

回答

1

請嘗試代碼,它可以幫助你:

$mail = JFactory::getMailer(); 
$mail->isHTML(true); 
$mail->CharSet = "text/html; charset=UTF-8;"; 
$mail->addRecipient($email_to); 
$mail->addReplyTo($email, $name); 
$mail->setSender(array($mailfrom, $fromname)); 
$mail->setSubject($subject); 
$mail->setBody($body); 
$sent = $mail->Send(); 
+0

這是從一個不回覆地址發送的。無需在我的情況下使用addReplyTo。出於同樣的原因,也不需要添加一個名字。 這是如何解決我的問題? – Zachiel

+0

請試用相同的代碼,使用空白從名稱和評論replayto行可能會正常工作,根據您的要求。 – bharat

相關問題