我正在使用 Joomla 的 PHPmailer 集成版本来发送电子邮件。我已经阅读了这个答案,但有些东西对我不起作用。AltBody 行引发异常,PHP 无法到达 Send 行。
通过注释掉 AltBody 行,我的邮件的 HTML 版本被发送并且工作正常。
我还使用了 setBody 而不是 Body,因为 Body 不起作用(从今天的进一步阅读中我怀疑这是因为我使用$mail->Body($msg)
了而不是$mail->Body = $msg
,并且“Body 是一个属性,而不是一个方法”,Marc B 在评论中说。)
这与我不使用 SMTP 有关吗?
这可能是因为我试图分配给 AltBody 的内容吗?(它是通过连接几个使用 \n 作为换行符的文本字符串构建的变量。)
这是因为其他原因吗?
不幸的是,我无法发布整个 php.ini 的代码。我会试着记住它,明天我会检查它并逐步纠正它。
$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('example@example.com');
$mail->addRecipient('you@example.com');
$mail->setFrom('example@example.com');
$mail->setSubject('test mail');
$mail->setBody($msg);
$mail->AltBody($txt); # not working, commenting the line out works.
$mail->ClearCCs();
$mail->ClearBCCs();
$mail->AddBCC('example@example.com');
$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');
}
这一切都在 atry
中,catch
用于捕获异常并回显它们。