Laravel 8通过api客户端发送mailgun错误:未经授权的响应:禁止

Posted

技术标签:

【中文标题】Laravel 8通过api客户端发送mailgun错误:未经授权的响应:禁止【英文标题】:Laravel 8 sending mailgun via api Client error: Unauthorized response: Forbidden 【发布时间】:2021-12-21 07:22:19 【问题描述】:

我最近将 Laravel 从 5.7.29 升级到了 8.51。多年来,我一直在使用 Mailgun API 发送电子邮件。旧版本的站点仍然可以通过 mailgun 发送,但新版本不断返回此消息:

Client error: `POST https://api.mailgun.net/v3/mg.clstracking.com/messages.mime` resulted in a `401 Unauthorized` response: Forbidden

如果您在欧盟工作并且未能更改服务配置中的 MAILGUN_ENDPOINT,我发现了类似的帖子表明这种响应。服务器和站点都在美国。我已经验证我的 .env 中有正确的设置,并且这些设置已传递到我的 services.php 配置文件中并使用 artisan config:cache 进行缓存。我通过查看 /bootstrap/cache/config.php 验证了这一点,一切都在那里 - 我什至检查了另一个具有相同工作方式的不同域的站点。我什至尝试将我的域和密码硬编码到 services.php 中。

如果我改变了

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io

使用我的用户名和密码,我没有收到任何错误,但是没有发送电子邮件,并且检查了 mailgun 上的日志,没有记录。我不知道还能尝试什么。

在环境中我有:

MAIL_MAILER=mailgun
MAILGUN_DOMAIN=mg.mydomain.com
MAILGUN_SECRET=key-##########################

在 config/services.php 中:

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],

在 config/mail.php 中:

'default' => env('MAIL_MAILER', 'mailgun'),

'mailers' => [
  'mailgun' => [
    'transport' => 'mailgun',
  ],
],

【问题讨论】:

【参考方案1】:

我在使用 gmail 生产的项目中使用此配置

MAIL_MAILER='sendmail'
MAIL_HOST='sendmail.googlemail.com'
MAIL_PORT=587
MAIL_USERNAME='email@gmail.com'
MAIL_PASSWORD="*********"
MAIL_ENCRYPTION='tls'
MAIL_FROM_ADDRESS='email@gmail.com'
MAIL_FROM_NAME="$APP_NAME"

也许对你有帮助。

【讨论】:

感谢格苏!我确实很感激 - 在尝试了一切之后,我在深夜找到了一个带有该选项的帖子,并且现在已经实施了该选项,直到我能够解决问题。它实际上作为备份工作得很好,尽管我更喜欢事务服务器的可靠性。其他人注意:要使用 googlemail,您必须配置“不太安全的应用程序访问”medium.com/@agavitalis/…

以上是关于Laravel 8通过api客户端发送mailgun错误:未经授权的响应:禁止的主要内容,如果未能解决你的问题,请参考以下文章

混淆 Laravel 护照 API 安全性的工作原理

使用 Mailgun API 在 Laravel 8 中未发送电子邮件

在 Laravel 8 中使用 API 路由时返回错误

Laravel:如何将图像或文件发送到 API

如何通过laravel发送短信通知

Laravel API - 使用 Firebase FCM 向 android 和 iOS 客户端应用程序发送通知