我正在使用Mail和Mailgun从Laravel(5.8)发送电子邮件。
将电子邮件发送到沙箱时没有问题,但是在生产中,我无法从域中发送电子邮件。我基本上已经解决了这归因于EU端点,但是即使配置了端点,仍在尝试从默认值发送。
为什么仍然使用默认值?
failed_jobs例外:
GuzzleHttp \ Exception \ ClientException:客户端错误:
POST https://api.mailgun.net/v3/mydomain.com.au/messages.mime
导致404 NOT FOUND
的回复:{“ message”:“找不到域: mydomain.com.au”}
此端点应为api。欧盟 .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
答案 0 :(得分: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';
...从供应商/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->端点
唯一可能导致您出错的是旧的作曲家模块。
答案 1 :(得分:0)
我看到两件事:
从哪里获得答案都没有关系,因为它们之间可能存在重定向。在这一点上,我会忽略这一点。
您的MAILGUN_DOMAIN看起来不对。我有一个看起来像这样的旧书:“ sandboxaff30js632kjh4beb94e3efce3f8d4dc0 **。mailgun.org **”
根据我的经验,我记得欧盟地区存在一些问题。
您的看似错了,但可能是您有那个。邓诺。
答案 2 :(得分:0)
没有/ v3的Myend点,看起来像这样MAILGUN_ENDPOINT =