使用用户名"apikey" 在SMTP服务器上进行身份验证失败。

8

当我在 Laravel 6 中通过 SendGrid 发送邮件时,出现了以下错误:

Failed to authenticate on SMTP server with username "apikey" using 2 possible authenticators. Authenticator LOGIN returned Expected response code 250

my .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
5个回答

2
将我的服务器公共IP地址添加到SendGrid的白名单中在我的情况下就足够了。

这对我来说很合适。 - Isaque Bezerra
谢谢,我也有同样的问题 :) - undefined

2

请问您已经编码了哪个API密钥?当我们登录SendGrid并进入“设置-> API密钥”时,我们有一个“创建API密钥”的选项,当我们点击它时会要求输入API密钥名称。所以,您是否对此名称或其他字段进行了编码?一旦您收到评论,请告诉我。 - Manish Silawat
将您的 API 密钥值编码为 base64,并设置为密码。 - Ever CR

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,因为我的目的是为了我们公司网站的联系表格,我希望邮件发送者和电子邮件是客人或客户的电子邮件。
如果您希望始终从同一电子邮件地址发送,则填写这些变量。
这是一个使用Laravel可邮寄项的官方文档,来自SendGrid的https://sendgrid.com/docs/for-developers/sending-email/laravel/

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

0

我曾经遇到过同样的问题,后来我找到了解决方法。

Mailgun 暂时禁用了我的账户,因为有未支付的月度发票。这就是我收到那个错误的原因。

所以,你应该检查一下你的邮件服务/账户状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接