【发布时间】: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