无法通过php脚本发送邮件

时间:2013-10-13 10:15:24

标签: php linux email

我在互联网上找到了一个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.";
?>

如果我从网上酒店使用它,它的效果非常好。但我需要通过在我的家庭服务器上运行,我只是没有收到任何东西。我试图用php -f phpTest和本地ip(10.0.0.2)以及使用全局主机名运行它。我收到“邮件发送”而没有收到邮件。

这是我运行的ubuntu服务器,它使用apache2。就像我说的那样,脚本没有错,因为它适用于web-hotel。它应该是我的本地设置,但我无法弄清楚是什么。

所有帮助将不胜感激!

\\恶魔

2 个答案:

答案 0 :(得分:1)

PHP mail函数使用本地MTA(邮件传输代理),即与PHP解释器和Apache Web服务器在同一台计算机上运行的邮件守护程序。

因此,您必须在Ubuntu设置上安装和配置一个。 sendmail是经典版本,但据说exim可以轻松配置,并且可以将您当前的SMTP服务器用作智能主机中继,适用于家庭服务器。

sudo apt-get install exim4-daemon-light
sudo dpkg-reconfigure exim4-config

答案 1 :(得分:1)

您可以使用Swiftmailer之类的库来发送邮件through an existing SMTP server(例如您的常规邮件地址),而不是依赖需要有效MTA的内置mail功能。这样你就可以获得更少垃圾邮件过滤的额外奖励(因为垃圾邮件过滤器有时会非常怀疑从家庭服务器发送的邮件)。