我使用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
,捕獲異常和附和他們。
你怎麼能指望任何人來調試代碼,如果你不張貼任何?閱讀PHPMailer文檔,瞭解如何設置AltBody – Synchro
@Synchro我設法複製一些。我希望這已經足夠了。 – Zachiel
只需閱讀PHPMailer文檔和代碼。沒有setBody方法; Body和AltBody是屬性,所以只需設置它們。您無需致電clearAttachments。 – Synchro