2013-10-13 146 views
3

发送邮件时,我发现一个PHP脚本互联网上:无法通过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上工作。它应该是我的本地设置,但我无法弄清楚什么。

所有帮助将不胜感激!

\\妖

+3

你有一个邮件后台设置?如果没有,最好在超级用户上询问。 – Dave

+0

您应该检查您的服务器上的邮件日志/设置。 –

+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

不是依靠内置mail功能,需要一个工作MTA的,你可以使用库像Swiftmailer发送邮件through an existing SMTP server(例如,您的普通邮件地址)。这样,您就可以获得更少的垃圾邮件过滤功能(因为垃圾邮件过滤器有时对从家庭服务器发送的邮件非常怀疑)。

+1

这绝对是您的最佳选择。我曾尝试在家中建立自己的邮件SMTP服务器,但使用动态IP则可能完全忘记它。即使使用固定IP,您仍然会被大多数邮件服务器过滤掉 – chuck258