【问题标题】:Laravel Office365 Expected response code 250 but got code "", with message ""Laravel Office365 预期响应代码 250 但得到代码“”,带有消息“”
【发布时间】:2019-05-07 04:22:18
【问题描述】:
需要帮助在我的 Laravel 应用程序上设置邮件。
我的 .env 文件:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.office365.com
MAIL_PORT=587
MAIL_USERNAME=*****@*****.com
MAIL_PASSWORD=******
MAIL_ENCRYPTION=tls
这会返回以下错误:
Expected response code 250 but got code "", with message ""
【问题讨论】:
标签:
laravel
smtp
office365
swiftmailer
【解决方案1】:
我遇到了同样的问题,结果证明 Office 365 不允许您在邮件发送功能中使用与您在 .env 文件中使用的设置不同的 from 设置。
我想根据通过表单提交请求传入的任何数据来设置from 名称和电子邮件地址,以便在 CRM 系统中捕获它们,它抛出了同样的异常。不确定这是否对您有帮助,但这就是我解决问题的方法。
以我在控制器中的代码为例:
$data = [
'name' => $request->get('name'),
'surname' => $request->get('surname'),
'email' => $request->get('email'),
'phone' => $request->get('phone'),
'subject' => $request->get('message-subject')
];
$from = $data['name'] . ' ' . $data['surname'];
Mail::send('mail.mymail', compact('data'), function($message) use ($request, $data, $from) {
$message->to('example@companyiworkfor.com', 'Some Company I Work For')->subject('Website Contact Form');
$message->from($data['email'], $from);
// Office 365 won't let you use a different from address here,so use same email as per your .env
});
【解决方案2】:
我们在客户的一个内部工具中收到了相同的错误消息,该工具在 Symfony 3 和 Swiftmailer v5.4.4 上运行。
经过一番调试,我发现之前 Swiftmailer 抛出了一个异常。原因是来自 smtp.office365.com 的回复:
421 4.7.66 不支持 TLS 1.0 和 1.1。请升级/更新您的客户端以支持 TLS 1.2。访问https://aka.ms/smtp_auth_tls。 [AM6PR02CA0020.eurprd02.prod.outlook.com]
Microsoft 放弃了对 TLS 1.0 和 1.1 的支持。经过一番研究,我发现this github问题:
此提交 (4c4b333) 引入了 TLS 1.1 / 1.2 支持,但尚未发布。不幸的是,所有 Swiftmailer 用户(除了使用最近的 dev-master 的用户)都绑定到 TLS 1.0,这开始产生问题
在其中一个 cmets 中,@fabpot 回复说他们已将错误修复反向移植到 Swiftmailer 5。它已发布在 5.4.10 中。
升级 Swiftmailer 后,邮件又恢复了。