PHP mail()消息处理失败

时间:2016-03-16 11:20:45

标签: php email

我一直试图通过将JSON发布到处理实际发送的response.php来获取PHP的mail()函数。经过多次尝试后,我仍未能将信息传达给接收者。我现在遇到的问题是该消息需要符合RFC 5322标准:

wouter0.7@live.nl
host mx2.hotmail.com [65.54.188.72]
SMTP error from remote mail server after end of data:
550 5.7.0 (BAY004-MC1F14) Message could not be delivered. Please ensure the message is RFC 5322 compliant.

脚本的消息输出是:

asdada\r\n\nName: Www\r\nEmail: wouter0.7@live.nl

(请记住,经过一千次尝试后,我只按了几个按钮,因此消息没有意义。) 我已使用PHP Manual:MAIL()上的示例创建标题,因此它们看起来像这样:

$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

当我查看从邮件传递系统获得的邮件时,标题似乎是有序的。但是,该消息似乎在此过程中搞砸了,导致邮件传递失败。

有谁知道为什么会这样?如果我需要上传更多代码/示例,请告诉我。

编辑:忘了提到我已经尝试在mail()函数中添加第五个参数:

mail($to,$subject,$message,$headers,"-f your@email.here");

建议here 编辑2:我用于mail()函数的代码:

//Send Mail

    $to = "wouter0.7@live.nl"; // Your email here
    $path = $_SERVER['HTTP_HOST'];
    $subject = 'Message from ' . $path; // Subject message here 
    $email = $return["email"];
    //Set headers
    $headers = 'From: ' . $email .''. '\r\n'.
    'Reply-To: '.$email.'' . '\r\n' .
    'X-Mailer: PHP/' . phpversion();
    $message = $return['msg'] . '\r\n\n'  .'Name: '.$return['name']. '\r\n'
    .'Email: '.$return['email'];
    mail($to, $subject, $message, $headers,"-f wouter0.7@live.nl");

$ return数组用于编码为JSON,它只包含字符串值

1 个答案:

答案 0 :(得分:3)

请注意所有'\r\n'的单引号?和'\r\n\n'

这些没有被正确解释/解析,必须用双引号"\r\n""\r\n\n"包装。

参考mail()的手册:

手册建议不要使用\r\n的单引号,但只适用于mail('caffeinated@example.com', 'My Subject', $message);和其他一些示例,但不适用于\r\n

  • 再次阅读本手册。所有\r\n都有双引号,而不是单引号。

正如Martin在评论中所建议的那样,PHPMailer是一个很好的程序,就像Swiftmailer一样。

参考文献: