【问题标题】:Laravel 5.8 Mailgun EU endpoint configuration not workingLaravel 5.8 Mailgun EU 端点配置不起作用
【发布时间】:2019-07-10 10:11:36
【问题描述】:

我正在使用 Mail 和 Mailgun 从 Laravel (5.8) 发送电子邮件。

向沙箱发送电子邮件时没有问题,但是在生产中我无法从我的域中发送电子邮件。我基本上已经确定这是由于欧盟端点造成的,但是即使我配置了端点 guzzle 仍然试图从默认值发送。

为什么仍然使用默认值?

failed_jobs 异常:

GuzzleHttp\Exception\ClientException:客户端错误:POST https://api.mailgun.net/v3/mydomain.com.au/messages.mime 导致 404 NOT FOUND 响应:{“消息”:“未找到域: mydomain.com.au" }

这个端点应该是 api.eu.mailgun.net/v3

services.php

'mailgun' => [

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

.env 文件

MAIL_DRIVER=mailgun

MAILGUN_DOMAIN=mydomain.com.au

MAILGUN_SECRET=2.............a

MAILGUN_ENDPOINT=api.eu.mailgun.net/v3

【问题讨论】:

  • Laravel 5.6 用户:Mailgun 端点配置是在 5.7 中引入并向后移植到 5.5,但不是 5.6 AFAICT。我只使用 eu 域,虽然我不建议这样做,但目前我只是将代码作为构建步骤修补,如下所示:sed -i 's#https://api.mailgun.net/v3/#https://api.eu.mailgun.net/v3/#' /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php

标签: laravel mailgun


【解决方案1】:

来自我的(工作).env:

MAILGUN_DOMAIN=your-in-mailgun-for-eu-configured-subdomain.yourdomain.com
MAILGUN_SECRET=your-key-0123456789abcdef0123456789abcdef0123456789abcdef
MAILGUN_ENDPOINT=api.eu.mailgun.net

请注意缺少的 /v3,您不需要它。但是从你的信息来看,你有一个不同的错误:

你忘记在你的服务器上composer install 并且仍然使用旧包。 因为:

在 vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php:51

$this->endpoint = $endpoint ?? 'api.mailgun.net';

...从 vendor/laravel/framework/src/Illuminate/Mail/TransportManager.php:138 调用

        return new MailgunTransport(
            $this->guzzle($config),
            $config['secret'],
            $config['domain'],
            $config['endpoint'] ?? null
        );

...直接引用 config/services.php -> mailgun -> 端点

因此,唯一可能导致您出错的是旧的 composer 模块。

【讨论】:

    【解决方案2】:

    我看到了两件事:

    1. 从哪里收到答案并不重要,因为两者之间可能存在重定向。在这一点上我会忽略它。

    2. 您的 MAILGUN_DOMAIN 看起来有问题。我有一个看起来像这样的旧的:“sandboxaff30js632kjh4beb94e3efce3f8d4dc0**.mailgun.org**”

    根据我的经验,我记得在欧盟位置存在一些问题。

    你的看起来是错的,但可能是你有那个。不知道。

    【讨论】:

    • 如果我使用我的沙盒环境,没有问题,因为它在美国域中。老实说,我什么都试过了,所以最后我放弃了,把我的mailgun域名从欧盟改成了美国,效果很好。我的域实际上是一个托管的子域 - mail.mydomain.com
    【解决方案3】:

    没有 /v3 的我的终点,看起来像这样 MAILGUN_ENDPOINT=

    【讨论】:

      猜你喜欢
      • 2020-09-14
      • 1970-01-01
      • 2020-12-13
      • 2020-02-19
      • 2020-12-14
      • 1970-01-01
      • 2020-01-17
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多