0

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

1 回答 1

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

也许对你有帮助。

于 2021-11-08T13:33:07.990 回答