我正在尝试使用 Swift_SmtpTransport 发送电子邮件,但出现以下错误:
501 5.5.2 <[::1]>:Helo 命令被拒绝:IP 地址无效
SMTP 服务器是一个远程服务器,它可以在我的生产服务器上工作,但不能在运行 OS X 的开发机器上工作。
它也不需要抛出异常,而是需要我使用记录器插件来找出它为什么不起作用。
我该怎么做才能让它使用真实的 IP 地址?
我正在尝试使用 Swift_SmtpTransport 发送电子邮件,但出现以下错误:
501 5.5.2 <[::1]>:Helo 命令被拒绝:IP 地址无效
SMTP 服务器是一个远程服务器,它可以在我的生产服务器上工作,但不能在运行 OS X 的开发机器上工作。
它也不需要抛出异常,而是需要我使用记录器插件来找出它为什么不起作用。
我该怎么做才能让它使用真实的 IP 地址?
我在代码中进行了一些探索并找到了它。
配置 SMTP 传输时,需要调用 setLocalDomain()。在 OS X 上使用 PHP,默认为 "::1",被远程服务器拒绝。我刚刚在我的开发配置中添加了一行来设置:
$transport = Swift_SmtpTransport::newInstance('mail.pantsburger.com', 587);
if (SITE_ENV == SITE_ENV_DEV) {
$transport->setLocalDomain('[127.0.0.1]');
}
我认为这也是 Swiftmailer 的一个错误——它确实应该为这样的事情抛出异常,而不是仅仅将每个收件人列为“失败”。