我正在尝试编写一个非常简单的PHP代码,用于向给定地址发送电子邮件。
I have this code:
<?php
mail('address@server.com','Test','Test OK');
echo 'Message sent!';
?>
而不是'address@server.com'
我使用了自己的电子邮件。
我已经使用foundationphp中给出的指示启用了php,因为我正在运行带有雪豹的mac。
php似乎正在工作,因为我收到了“发送的消息!”回声,但是我没有收到任何电子邮件。任何想法为什么会发生这种情况?我究竟做错了什么?
提前致谢!
答案 0 :(得分:5)
首先,你根本没有检查mail
的返回值,你会回复“发送的消息!”即使它返回了假。
if (mail('address@server.com','Test','Test OK')) {
echo 'Message sent!';
}
其次,即使mail
返回true,这只意味着它将邮件传递给MTA,而不是邮件到达目的地。如果PHP正在成功切换邮件,那么您需要查看邮件日志并在那里进行调试,因为问题不在PHP代码/配置中。
答案 1 :(得分:2)
如果您在本地计算机上运行此程序,则您的电子邮件可能无法进入任何地方。 PHP的mail
函数不知道您是否有正确的外发邮件连接,它只知道邮件是否成功进入本地队列。
重要的是要注意,仅仅因为邮件被接受传递,并不意味着邮件实际上将到达预定目的地。 - http://php.net/mail
非服务器机器的最佳选择是设置远程SMTP服务器(通常是ISP的服务器)。 http://email.about.com/od/emailprogrammingtips/qt/Configure_PHP_to_Use_a_Remote_SMTP_Server_for_Sending_Mail.htm
答案 2 :(得分:1)
您收到回音“已发送消息!”因为您没有询问mail()是否成功:
if ( mail(...) )
{
echo 'Message sent!';
}
else
{
echo "Fail!";
}
这应该会给你一个正确的反馈。