我尝试使用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
并成功发送..
答案 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 ;)