我正在尝试使用 SwiftMailer(这是 Laravel 默认使用的)发送电子邮件: $transport = (new Swift_SmtpTransport('smtp.my-server.com', 465, "tls")) ->setAuthMode('PLAIN') ->setUsername('my-username') ->setPassword('my-password'); $mailer = new Swift_Mailer($transport); $message = (new Swift_Message('Wonderful Subject')) ->setFrom(['address@my-domain.com' => 'My Name']) ->setTo(['my-gmail-address@gmail.com']) ->setBody('Here is the message itself'); $mailer->send($message); echo "\nMail sent! \n\n";运行这个给我:预期响应代码 220 但得到一个空响应在 Thunderbird(电子邮件客户端)中使用相同的设置可以工作:我可以在 Thunderbird 中使用这些设置发送电子邮件。(来自我试图使用 swiftmailer 的同一个系统)那么我该如何调试呢?是否有一些我需要在 swiftmailer 中更改的默认设置才能使其工作?有什么方法可以获得更多调试信息吗?我的 SMTP 服务器甚至不记录身份验证尝试。这就像 swiftmailer 甚至没有尝试连接到我的 smtp 服务器!更新:我尝试使用Swift_Plugins_LoggerPlugin获取更多调试信息,但没有帮助:++ 启动 Swift_SmtpTransport!! 预期响应代码 220,但得到一个空响应(代码:0)
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
TLDR;使用ssl而不是tls使用的端口力量时ssl/tls。Swiftmailer的“TLS”其实不是tls,它的starttls。
swiftmailer 的“tls”加密选项似乎被贴错标签了!我的服务器只接受ssl/tls端口 465,我可以通过 Thunderbird 连接到它,但 swiftmailer 无法连接。
当我切换到仅starttls在我的服务器上支持的端口 587 时,它可以工作,即使加密设置为tls(不应与 相同starttls)。
查看源文件证实了我的怀疑:
if ($this->params['tls']) {
try {
$this->executeCommand("STARTTLS\r\n", [220]);
...
当它设置为 时tls,它实际上意味着starttls。:P
所以如果你想使用ssl/tls,请不要使用 swiftmailer 加密选项“tls”😅
当我将加密更改为 时ssl,它在强制执行的端口上工作ssl/tls。所以答案是使用ssl.
编辑:我在 swiftmail github 上打开了一个问题,但问题已经在“打开”状态。所以我不是唯一一个被这个咬的人。😛
添加回答
举报
0/150
提交
取消