我正在使用 Mail 和 Mailgun 从 Laravel (5.8) 发送电子邮件。
向沙箱发送电子邮件时没有问题,但在生产中我无法从我的域发送电子邮件。我基本上已经弄清楚这是由于 EU 端点造成的,但是即使我配置了端点 guzzle 仍然尝试从默认值发送。
为什么仍然使用默认值有什么原因吗?
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
服务.php
'邮件枪' => [
Run Code Online (Sandbox Code Playgroud)'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net/v3'), ],
.env 文件
MAIL_DRIVER=邮件枪
MAILGUN_DOMAIN=mydomain.com.au
MAILGUN_SECRET=2........................a
MAILGUN_ENDPOINT=api.eu.mailgun.net/v3
从我的(工作).env:
MAILGUN_DOMAIN=your-in-mailgun-for-eu-configured-subdomain.yourdomain.com
MAILGUN_SECRET=your-key-0123456789abcdef0123456789abcdef0123456789abcdef
MAILGUN_ENDPOINT=api.eu.mailgun.net
Run Code Online (Sandbox Code Playgroud)
请注意缺少 /v3,您不需要它。但从你的信息来看,你有一个不同的错误:
您忘记composer install在服务器上安装并仍然使用旧包。因为:
在供应商/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
);
Run Code Online (Sandbox Code Playgroud)
...直接引用 config/services.php -> mailgun -> 端点
因此,唯一可能导致错误的是旧的作曲家模块。
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |