【问题标题】:504 Gateway Time-Out When PHP Sends MailPHP发送邮件时504网关超时
【发布时间】:2018-05-10 20:28:42
【问题描述】:

只有在生成电子邮件时,我才会收到 504 网关超时。我检查了 php.ini 并将 max_execution_time 设置为 300 以及 default_socket_timeout。一旦我删除了 SMTP 功能并且该站点无法再发送电子邮件,就没有需要发送电子邮件的 504 操作了。 SMTP 配置正确,因为我在测试站点上使用了相同的配置。生产环境中显然有一些东西丢失或配置错误,但我不知道去哪里找。如果有人有任何见解,我将非常感激,因为我最近几天一直在寻找答案。

这是在 AWS 上运行并使用 Amazon SES 发送电子邮件。 Prod 和 Dev 都是它们自己的实例。

SMTP 设置:(就像我说的,这适用于测试站点)

add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'host';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = 25;
    $phpmailer->Username   = 'username';
    $phpmailer->Password   = 'password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From       = 'info@website.com';
    $phpmailer->FromName   = 'Site Name';
    $phpmailer->SMTPDebug  = 1;
}

【问题讨论】:

  • SMTP 可能非常慢,有时是故意的。最好的方法是使用 SMTP 发送到本地邮件服务器,并让它处理传递延迟。测试和生产部署是否在同一个 ISP 上?如果不是,则可能是您的生产 ISP 阻止了出站 SMTP。您可以使用 PHPMailer 故障排除指南中的说明进行测试。
  • 我已经添加了 SMTP 设置,但就像我说的,它在测试站点上工作,这是一个不同的服务器,所以我觉得配置是不必要的。

标签: php smtp timeout phpmailer


【解决方案1】:

我发现了这个问题。 AWS 限制了端口 25,导致生产中返回 504,因为那里的流量很大,这就是 Dev 工作的原因。我将端口更改为 587,它们没有节流,现在它工作正常。

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2013-05-20
    • 2021-05-27
    相关资源
    最近更新 更多