使用php脚本无法发送邮件

3

我在网上找到了一个PHP脚本:

<?php
$to = "*******@yahoo.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "****@*****.nu";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

如果我在我的Web托管中使用它,它能够完美地工作。但是我需要在我的家庭服务器上运行它,但却没有收到任何消息。我尝试使用php -f phpTest以及本地IP地址(10.0.0.2)和全局主机名来运行它。我只得到“Mail send”而没有收到邮件。

我正在运行一个Ubuntu服务器,它使用Apache2。像我说的那样,这个脚本没有问题,因为它在Web托管上运行得很好。应该是我的本地设置有问题,但我无法找出问题所在。

非常感谢您的帮助!

\\demon


3
你是否设置了邮件守护进程?如果没有,最好在超级用户论坛上询问。 - Dave
你应该在你的服务器上检查邮件日志/设置。 - Lajos Veres
检查一下你的目标垃圾邮件文件夹?你在消息中签名吗? - Ilia
2个回答

1
PHP的mail函数使用本地MTA(Mail Transport Agent),即在与您的PHP解释器和Apache Web服务器相同的机器上运行的邮件守护进程。因此,您必须在Ubuntu设置中安装和配置MTA。传统的MTA是sendmail,但据说exim易于配置,并且可以将您当前的SMTP服务器用作智能主机中继,这对家庭服务器很有效。
sudo apt-get install exim4-daemon-light
sudo dpkg-reconfigure exim4-config

1

不要依赖内置的mail函数,因为它需要一个工作的MTA,你可以使用类似于Swiftmailer的库通过现有的SMTP服务器(例如你的常规邮件地址)发送邮件。这样你就能额外获得减少垃圾邮件过滤的好处(因为垃圾邮件过滤器有时会对从家庭服务器发送的邮件非常怀疑)。


1
这绝对是最好的选择。我曾经尝试在家里设置自己的邮件SMTP服务器,但由于动态IP,你完全可以忘记它。即使有固定IP,大多数邮件服务器仍会将其过滤掉。 - chuck258

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接