0

直到昨天,下面的代码还在工作。不确定,今天下面的代码不起作用。我没有收到任何电子邮件。虽然,我得到了正确的回声,但我没有收到任何电子邮件。

$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


回答

是服务器问题。因此电子邮件没有被发送。

4

5 回答 5

1

据我了解,电子邮件是从 PHP mail() 函数发送的。此函数使用本地 MTA 传递消息。

如果您可以控制服务器及其 MTA,则可以开始检查服务器的日志文件。在那里,您应该会看到来自 PHP mail() 函数的电子邮件。如果不是这种情况,PHP 似乎不会将其传递给 MTA(在您的情况下是 sendmail)。

如果它出现在日志中,请检查这些行以获取更多详细信息。原因可能在里面。如果您不确定,请发布日志内容(不要忘记屏蔽它的私人详细信息)。

但是,如果它在日志中没有显示任何问题,则可能有其他几个原因。喜欢你的IP被列入黑名单。要检查,请访问以下网站http://mxtoolbox.com。但是接收电子邮件服务器也有可能将电子邮件退回......这将显示在服务器根收件箱中,您可以在其中看到返回原因。

我希望这对你有帮助!?

于 2013-07-16T14:01:21.503 回答
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

于 2013-07-16T10:57:52.430 回答
0

要解决 Ubuntu、Apache 中的问题。您必须确保您的计算机中安装了邮件发送软件!

在 ubuntu 中,打开终端并输入以下命令:

sudo apt-get install sendmail

之后再试一次!

于 2013-07-16T11:05:51.167 回答
0

这里没有 PHP 错误,这是您的服务器设置有问题。一旦邮件被发送到 sendmail 或您正在使用的任何东西,PHP 将在 mail() 上返回 true。它不知道电子邮件是否已实际发送。

于 2013-07-16T10:52:03.003 回答
0

有时mail()函数可能不起作用,所以你应该使用PHPMailer,一个写得很好的文档写在这里:

rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/

于 2013-07-16T11:33:18.490 回答