我最近将我的 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',
],
],