我正在尝试通过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肯定等于电子邮件地址
答案 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
的现代邮件库,您将能够看到任何错误并处理它们。它还可以让您知道您的邮件已已发送,这意味着您可以跟进您的托管服务提供商和/或电子邮件提供商,以确定邮件未送达的原因。