如何正确配置symfony2 swiftmailer包以使用NTLM AUTH的SMTP服务器?

时间:2014-03-19 09:56:00

标签: php email symfony ntlm swiftmailer

# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    host:       10.8.100.1
    port:       25
    username:   user
    password:   pass
    auth_mode:  ~
    encryption: ~
    spool:      { type: memory }

当我尝试通过$this->get('mailer')->send($message);发送消息时,我收到以下错误:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed
to authenticate on SMTP server with username "user" using 0 possible  authenticators'
in /..path../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:184 Stack trace: #0 

我尝试将auth_mode设置更改为所有可能的值plain, login, cram-md5, or null - 仍然是相同的错误消息。


然后我想telnet到SMTP服务器手动检查我是否可以授权(但是,我100%确定凭据是否正确)。

telnet 10.8.100.1 25

Trying 10.8.100.1...
Connected to 10.8.100.1.
Escape character is '^]'.
220 EXC.acme.local Microsoft ESMTP MAIL Service ready at Wed, 19 Mar 2014 10:34:00 +0100

EHLO EXC.acme.local

250-EXC.acme.local Hello [10.8.100.1]
250-SIZE
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250 XRDST

我不是邮件服务器专家,但我期待 AUTH LOGIN 那里......似乎服务器(我无法控制)有一个不同的身份验证方法(不支持通过Swiftmailer捆绑?)这可能是导致问题的原因......

我的怀疑是否正确?或者有没有办法配置Swiftmailer包以正确使用AUTH NTLM进行身份验证?

2 个答案:

答案 0 :(得分:1)

邮件服务器似乎拒绝你的连接(就像google一样,如果你尝试连接你的gmail帐户,如果你有,并且swiftmailer,你会得到同样的问题)

告诉您,为什么不尝试使用Swift_MailTransport代替Swift_SmtpTransport(它使用的mail基础方法与smtp <<}有点不同< / p>

答案 1 :(得分:0)

所以..问题不在于symfony2配置。问题是:

  • 邮箱配置为在VPN内部工作(来自域/组中的计算机)
  • 我试图从我的开发机器发送测试邮件(连接到VPN时...但我的计算机不在域/组中)

这也是telnet EXC.acme.local 25无效的原因,但telnet 10.8.100.1 25确实有效。

所以,当我尝试telnet,然后来自我的开发机器的EHLO ......得到250-AUTH NTLM,但当我通过SSH连接到prod机器(在域/组内)时从那里telnet:

  • telnet EXC.acme.local 25确实有效
  • EHLO EXC.acme.local返回AUTH LOGIN

一旦我发现了,我只是将我的更改上传到prod机器并开始从那里测试配置(使用swiftmailer.transport: smtp)并且它有效!