在Symfony 2中轻松配置SwiftMailer“Local Domain”设置

问题描述 投票:2回答:2

SwiftMailer是从Symfony 2项目发送电子邮件的默认方式,我想在应用程序中使用它。我已将其指向我的互联网提供商(Virgin Media,英国)提供的SMTP服务器,但我的电子邮件未成功发送。抛出的例外说

预期的响应代码250,但得到代码“501”,消息“501 HELO需要有效地址

响应SMTP命令

HELO [:: 1]

[:: 1]对应于IPv6中的localhost,如果它期望一个正确的域名,SMTP服务器会拒绝它并不奇怪。通过Swiftmailer源跟踪执行,我发现这个值来自AbstractSmtpTransport上的_domain;在调试会话期间更改值允许发送电子邮件。虽然它可以使用public setLocalDomain()方法设置,但它不在Symfony 2框架中的任何位置,所以似乎没有办法(至少对我来说很明显)可以简单地通过简单地配置这个值,例如,更改Symfony配置文件。

所以我的问题是:有没有其他方法可以改变这个值,理想情况下使用配置,而不是深入研究Symfony代码并更改不打算更改的位?如果是这样,什么?

php symfony swiftmailer
2个回答
2
投票

很不幸的是,不行。

在SwiftMailer中获取本地域的代码是:

/** Try to determine the hostname of the server this is run on */
private function _lookupHostname()
{
    if (!empty($_SERVER['SERVER_NAME'])
        && $this->_isFqdn($_SERVER['SERVER_NAME']))
    {
        $this->_domain = $_SERVER['SERVER_NAME'];
    } elseif (!empty($_SERVER['SERVER_ADDR'])) {
        $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']);
    }
}

所以,猜对了它的服务器配置。

我为SwiftMailer打开了一个问题:

https://github.com/swiftmailer/swiftmailer/issues/453

更新:该问题已于2018年2月27日得到解决。


2
投票

从Symfony控制器内部,您可以配置HELO / EHLO名称:$this->get('swiftmailer.transport')->setLocalDomain('your.domain');

© www.soinside.com 2019 - 2024. All rights reserved.