我使用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