直到昨天下面的代码才有效。不确定,今天下面的代码不起作用。我没有收到任何电子邮件。虽然,我正在回复正确,但我没有收到任何电子邮件。
$to = "yyyyy@yahoo.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "xxxxx@example.com";
$headers = "From:" . $from;
if (mail($to, $subject, $message, $headers)) {
echo "right";
} else {
echo "wrong";
}
为什么会发生这种情况?
我添加了print phpinfo();
并检查了sendmail_path。我在下面找到了。
sendmail_path /usr/sbin/sendmail -t -i
这是服务器问题。因此,电子邮件没有被发送。
答案 0 :(得分:1)
据我所知,电子邮件是从PHP mail()函数发送的。此功能使用本地MTA传递消息。
如果您可以控制服务器及其MTA,则可以开始检查服务器的日志文件。你应该看到来自PHP mail()函数的电子邮件。如果不是这种情况,PHP似乎不会将其传递给MTA(在您的情况下是sendmail)。
如果它显示在日志中,请检查行以获取更多详细信息。原因可能在那里。如果您不确定,请发布日志内容(不要忘记屏蔽其私人详细信息)。
但如果它在日志中没有显示任何问题,可能还有其他几个原因。就像你的IP被列入黑名单一样。要查看访问以下网站http://mxtoolbox.com。但是接收电子邮件服务器也可以将电子邮件重新弹回...这将显示在服务器根目录收件箱中,您可以在其中看到其中的返回原因。
我希望这对你有帮助!?
答案 1 :(得分:0)
此处没有PHP错误,这是您的服务器设置问题。一旦将邮件发送到sendmail或您正在使用的任何内容,PHP将在mail()上返回true。它不知道电子邮件是否实际发送过。
答案 2 :(得分:0)
尝试
$message = "test 1\r\ntest 2\r\ntest 3";
$message = wordwrap($message, 70, "\r\n");
mail(SETYOURMAIL@MAIL.COM', 'My Subject', $message);
如果这不起作用,请检查php.ini
http://www.quackit.com/php/tutorial/php_mail_configuration.cfm
答案 3 :(得分:0)
解决Ubuntu中的问题,Apache。您必须确保计算机中安装了邮件发送软件!
在ubuntu中,打开终端并输入以下命令:
sudo apt-get install sendmail
之后再试一次!
答案 4 :(得分:0)
有些时候mail()函数可能无法正常工作,所以你应该使用PHPMailer,这里写的是一篇写得很好的文档:
rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/