【问题标题】:Can't get php mail() to work on linux ubuntu无法让 php mail() 在 linux ubuntu 上工作
【发布时间】:2012-06-15 16:11:49
【问题描述】:

我已按照 on this page 的指示在 AWS linux ubuntu 上设置 mail(),但邮件功能无法正常工作。我知道我已经正确编写了发送邮件脚本,那么我还需要其他什么东西才能让它工作吗?有什么特殊的网络邮件软件或我需要的东西吗?

编辑:

display_errors 已开启。 PHP代码如下。 显示成功消息,但从未收到电子邮件。

$to = "myemail@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

if (mail($to, $subject, $body))
{
    echo("Message successfully sent!");
} 
else
{
    echo("Message delivery failed...");
}

编辑 2:

我尝试将其发送到由 godaddy 和 gmail 帐户托管的电子邮件。两者都在错误日志中返回了相同的响应。

错误日志:

"8C029: 主机 smtp.secureserver.net[...] 拒绝与 我:--*.... 554 您对此邮件系统的访问权限已 由于发送 MTA 的声誉不佳而被拒绝。如果你相信 此失败是错误的,请联系预期的收件人 通过其他方式。”

没关系,Gmail 会在 15 分钟后收到邮件。我猜这两个错误都与 Godaddy 托管的电子邮件有关。

【问题讨论】:

  • 不工作是什么意思?有任何错误信息吗? display_errors 开启了吗?
  • 在我的问题中更新。谢谢!
  • 将错误添加到问题中。我似乎无法弄清楚这一点。

标签: linux amazon-web-services postfix-mta php


【解决方案1】:

没关系,Gmail 会在 15 分钟后收到邮件。我猜这两个错误都与 Godaddy 托管的电子邮件有关。

该错误确实不是源自您的 mail() 代码或服务器设置 -- 您的 MTA 接收来自 mail 命令的消息并尝试传递该消息。

错误源自 GoDaddy 的接收邮件服务器(您的 postfix 试图将邮件传递到的服务器)。或沿途的 SMTP 中继服务器之一。

但拒绝并不意外:您声明您的服务器在 AWS 中运行。不幸的是,您不是唯一来自 AWS 实例的邮件。许多臭名昭著的垃圾邮件发送者比您早,破坏了 AWS 的 IP 地址作为值得信赖的邮件来源的可信度。这就是为什么许多 ISP 会阻止来自 AWS 的传入邮件(这就是 554 错误:中继访问被拒绝)。

使您的问题恶化:如果您继续使用这种方法,AWS 将自动阻止来自您的实例的所有外发邮件,以试图解决垃圾邮件问题。但是,在手动验证您的意图后,他们应该恢复您的邮寄权限。

您在 AWS 上可靠发送电子邮件的最佳选择可能是使用他们自己的 SES service,这可能会让您通过 MTA 中的大多数 RBL 检查。但是 SES 确实要花钱..

【讨论】:

    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多