无法使用用户名“ apikey”在SMTP服务器上进行身份验证

时间:2019-11-14 17:55:14

标签: laravel email sendgrid

我在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

3 个答案:

答案 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_ADDRESSMAIL_FROM_NAME,因为我的目的是用于我们公司的网站联系表单,并且我希望邮件发件人和电子邮件成为访客或客户电子邮件

如果您希望始终从同一封电子邮件发送,请填充这些变量。

这是 sendgrid 使用 Laravel mailables 的官方文档 https://sendgrid.com/docs/for-developers/sending-email/laravel/

答案 1 :(得分:0)

我遇到了同样的问题,我通过在Base64中对APIKEY进行编码解决了这个问题。

这里还有更多帮助:https://sendgrid.com/docs/API_Reference/SMTP_API/getting_started_smtp.html#-Sending-a-test-SMTP-email-with-Telnet

答案 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}"