我在laravel 6中尝试通过sendgrid发送邮件时遇到此错误:
Failed to authenticate on SMTP server with username "apikey" using 2 possible authenticators. Authenticator LOGIN returned Expected response code 250
我的.env:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=***** (my key copied from sendgrid)
MAIL_ENCRYPTION=tls
答案 0 :(得分:1)
如果您最近刚刚编辑了 .env 文件,更改将不会应用于配置。
在 php artisan serve 上运行时,退出服务器并重新启动它。配置应自动更新。
我正在开发中运行 xampp 服务器,就我而言,我需要在控制台中执行以下命令以将更改应用于配置:
php artisan config:clear
php artisan config:cache
无需更改端口,我的 .env 设置是相同的:
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=<your api key from sendgrid>
MAIL_ENCRYPTION=tls
我省略了 MAIL_FROM_ADDRESS
和 MAIL_FROM_NAME
,因为我的目的是用于我们公司的网站联系表单,并且我希望邮件发件人和电子邮件成为访客或客户电子邮件
如果您希望始终从同一封电子邮件发送,请填充这些变量。
这是 sendgrid 使用 Laravel mailables 的官方文档 https://sendgrid.com/docs/for-developers/sending-email/laravel/
答案 1 :(得分:0)
我遇到了同样的问题,我通过在Base64中对APIKEY进行编码解决了这个问题。
答案 2 :(得分:0)
在这个问题上花费了 28 小时后,解决方案将端口更改为 2525,现在可以正常工作了。您不需要更改或编码 base64。
使用以下设置。
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=2525
MAIL_USERNAME=apikey
MAIL_PASSWORD=sendgrid_apikey
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="${APP_NAME}"