我们使用 php 邮件功能向客户发送电子邮件。几天前,我们发现电子邮件无法送达hotmail.com域。我检查了电子邮件日志以查看是否有任何错误消息,以下是我发现的内容:
Aug 30 23:02:50 XXX sendmail[35378]: AXXX: to=<[email protected]>, ctladdr=<apache@XXX> (48/48), delay=00:00:05, xdelay=00:00:05, mailer=esmtp, pri=121148, relay=mx.XXX. [], dsn=5.6.0, stat=Data format error
Aug 30 23:02:50 sendmail[35378]: DSN: Data format error
这是什么数据格式错误以及如何修复?这个 ctladdr 是什么?我是否需要使用 PHP 设置它?我是否需要就此问题联系我的服务器提供商,或者这是我的 php 应用程序相关的问题?
我发送电子邮件的 PHP 代码是:
function send_email( $name_from, $email_from, $email_to, $subject, $message, $headers="" ) {
$returnVal = 0;
// made it through validation, send email
$subject = trim( $subject );
$message = trim( $message );
$headers .= "FROM: $name_from <$email_from>";
if( mail( "$email_to", "$subject", "$message", "$headers") or die ( trigger_error ( "Error: ", E_USER_ERROR ))) {
$returnVal = 1;
}
return $returnVal;
}
正如您在我这里看到的,$headers
我设置了 FROM 字段。
谢谢您的回答?
答案1
您的服务器的域名未被接受(用于 FROM)。它无法解析,格式不正确等。