电子邮件不会发送与PHP

时间:2011-04-10 17:39:20

标签: php email

我正在尝试通过php发送电子邮件。我曾尝试发送到aol和hotmail帐户,但也没有运气。萤火虫还给我发了“邮件发送”,所以我不知道问题是什么。

 $to = '$em';
 $subject = "Welcome";
 $body = "Hi,\n\nTest";
 $mail_sent = @mail($to, $subject, $body);
 echo $mail_sent ? "Mail sent" : "Mail failed";

$ em是从数据库中提取的电子邮件地址,我已经检查过,$ em肯定等于电子邮件地址

1 个答案:

答案 0 :(得分:3)

这里有两大问题。让我们分解吧。

$to = '$em';

变量不在single-quoted strings内插值。如果您需要将$to分配给$em内的值,请弃用引号:$to = $em;

$mail_sent = @mail($to, $subject, $body);
echo $mail_sent ? "Mail sent" : "Mail failed";

The @ is an error silencing operator。使用它是不好的做法,因为它阻止PHP在出现问题时让你知道。放弃它。

并不是说抑制错误在这里有帮助,因为当{em>可能出错时,mail() is functionally retarded从未实际抱怨

  

萤火虫也给我发了“邮件发送”,所以我不知道问题是什么。

mail()返回true时,就像它在这里一样,这意味着PHP 认为邮件已发送。

这并不意味着实际 已发送。 mail()是一个黑盒子。一旦它认为它成功了,邮件就在其他地方,你无法检查它。

请查看使用您的网络托管服务提供商的SMTP服务器和a modern PHP mail library, like SwiftMailer。 SwiftMailer使用起来有点复杂,但is pretty straight-forward才能正常工作。 The documentation非常好。

通过使用不使用mail的现代邮件库,您将能够看到任何错误并处理它们。它还可以让您知道您的邮件已发送,这意味着您可以跟进您的托管服务提供商和/或电子邮件提供商,以确定邮件未送达的原因。