PHPmailer不发送电子邮件

时间:2011-09-07 21:24:22

标签: php phpmailer qmail

我尝试使用phpmailer通过Qmail服务器发送电子邮件。发送后,我收到消息“meesage was sent”但没有收到任何消息..继承我的代码:

<?php
require("class.phpmailer.php");
$name = "Purchase Form";
$email_subject = "New Purchase Ticket";
$body = NULL;
foreach ($_REQUEST as $field_name => $value){
if (!empty($value)) $body .= "$field_name = $value\n\r";
}
$mail = new PHPMailer();
$mail->IsQmail();
$mail->FromName = $name;
$mail->AddAddress('*******@*********', 'Purchase Ticket');
$mail->Body = $body;
$mail->IsHTML(false);
$mail->Subject = $email_subject;
if(!$mail->Send())
{  echo "didnt work";
}
else {echo "Message has been sent";}

?>

从命令行我可以输入mail *****@****.com blah blah并成功发送..

3 个答案:

答案 0 :(得分:2)

检查邮件服务器的日志。服务器是否有效?它处理邮件队列吗?它尝试发送消息吗?消息是否反弹?消息是否卡在队列中?

仅仅因为PHPMailer说它起作用并不意味着任何事情真正触及了网络。这意味着PHPMailer成功地将电子邮件传递给SMTP服务器。在那之后,它完全脱离了PHPMailer的手。由于PHP方面的所有内容似乎都有效,因此您必须将调查移至流程的下一阶段,即SMTP服务器。

答案 1 :(得分:0)

确保您的服务器允许您以您设置为FromName

的用户身份发送

答案 2 :(得分:0)

我认为这是一个CR / LF问题,这是php中已知的Bug大约四年了 - 据我所知 - 到目前为止还没有修复:

http://bugs.php.net/bug.php?id=15841

由于使用了不符合RFC的换行符格式,生成的电子邮件无效(可在此处找到解释:http://cr.yp.to/docs/smtplf.html)。其他MTA如sendmail和postfix会自动纠正此问题; qmail没有。

您可以:使用php( lol )编写正确的邮件,或者让qmail管理员使用QmailScanner(http://qmail-scanner.sourceforge.net/),这也是这项工作。

最好的解决方案是卸载php并在将来使用perl duck ;)