为什么以下不起作用?
<?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
我的收件箱或垃圾邮件箱中没有收到电子邮件。
答案 0 :(得分:7)
postfix/smtp[4081]: connect to alt1.gmail-smtp-in.l.google.com[2a00:1450:4001:c02::1a]:25: Network is unreachable
看起来您正在使用Postfix和IPv6 support enabled,但您不在连接到互联网的IPv6网络上,或者防火墙规则阻止连接。
最简单的故障排除方法是修改main.cf
并将inet_protocols
更改为ipv4
,而不是将其设置为当前设置的任何内容。进行此更改后,请务必完全重新启动Postfix服务。链接的文档页面将提供有关启用IPv6支持的含义的更多信息。
如果在下载到IPv4后仍无法连接,请在系统和互联网之间查找防火墙规则。
我仍然希望积极鼓励你 不使用PHP的mail()
功能。 mail()
不保证投放。所有这一切都保证它尝试将邮件传递给幕后的某些东西。当出现问题时,它不会给你任何线索。相反,请使用第三方邮件库(如Swiftmailer或PHPMailer)与已知工作的SMTP服务器结合使用。这些库使得在发送时出现问题时更加明显,并且您可以获得非常有用的功能来启动。
答案 1 :(得分:0)
使用以下方法工作:
sudo apt-get install sendmail
编辑你的php.ini以取消注释sendmail - 我的位于
/etc/php5/apache2/
把
sendmail_path = /usr/sbin/sendmail -t -i
保存更改并重新启动apache。