0

我正在使用 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用于捕获异常并回显它们。

4

1 回答 1

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();
于 2016-07-09T07:54:45.967 回答