2016-07-03 56 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

相关问题