我一直试图通过将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,它只包含字符串值
答案 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一样。
参考文献: