用php发送电子邮件

时间:2011-08-10 00:32:28

标签: php sendmail

我正在尝试编写一个非常简单的PHP代码,用于向给定地址发送电子邮件。

I have this code:
<?php
mail('address@server.com','Test','Test OK');
echo 'Message sent!';
?>

而不是'address@server.com'我使用了自己的电子邮件。

我已经使用foundationphp中给出的指示启用了php,因为我正在运行带有雪豹的mac。

php似乎正在工作,因为我收到了“发送的消息!”回声,但是我没有收到任何电子邮件。

任何想法为什么会发生这种情况?我究竟做错了什么?

提前致谢!

3 个答案:

答案 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!";
}

这应该会给你一个正确的反馈。