2

为什么以下不起作用?

<?php

    mail('oshirowanen@gmail.com', 'some text here', 'some text here');

?>

access.log 显示:

127.0.0.1 - - [16/Jan/2013:08:46:52 +0000] "GET /test_mail.php HTTP/1.1" 200 294 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11"

error.log 显示:

nothing

我还从终端尝试了以下操作:

echo 'body' | sendmail recipient@example.net

没别的了。

mail.log 显示:

Jan 16 08:57:24 ubuntu postfix/smtp[4081]: connect to alt1.gmail-smtp-in.l.google.com[2a00:1450:4001:c02::1a]:25: Network is unreachable

我的收件箱或垃圾邮件箱没有收到电子邮件。

4

2 回答 2

7

postfix/smtp[4081]: connect to alt1.gmail-smtp-in.l.google.com[2a00:1450:4001:c02::1a]:25: Network is unreachable

看起来您正在使用启用 IPv6 支持的Postfix ,但您不在连接到整个 Internet 的 IPv6 网络上,或者有阻止连接的防火墙规则。

最简单的故障排除方法是编辑main.cf并更改inet_protocols为,ipv4而不是当前设置的任何内容。进行此更改后,请务必完全重新启动 Postfix 服务。链接的文档页面将提供有关启用 IPv6 支持的含义的更多信息。

如果您在下拉到 IPv4 后仍然无法连接,请在您的系统和 Internet 之间查找防火墙规则。

我还是要积极鼓励大家不要使用PHP 的mail()功能。 mail()保证交货。它只保证它试图将邮件交给幕后的某事。当事情出错时,它不会给你任何线索。相反,请将第三方邮件库(如SwiftmailerPHPMailer)与已知工作的 SMTP 服务器结合使用。这些库在发送时出现问题时变得更加明显,并且您可以获得非常有用的功能来启动。

于 2013-01-16T09:13:00.377 回答
0

使用以下方法使其工作:

sudo apt-get install sendmail

编辑您的 php.ini 以取消注释 sendmail - 我的位于

/etc/php5/apache2/

sendmail_path = /usr/sbin/sendmail -t -i

保存更改并重新启动 apache。

于 2013-01-16T19:30:53.383 回答