Laravel 5.1 GuzzleHttp客户端错误:404使用mailgun时

V4n*_*ll4 1 php laravel laravel-5

我在使用Laravel发送邮件时使用的是Mailgun服务.但是,我今天已经设置了它,它刚刚停止工作.我输入了所有正确的信息.env,config/services.phpconfig/mail.php.但是我仍然得到以下错误:

ClientException in Middleware.php line 69: 
Client error: 404
Run Code Online (Sandbox Code Playgroud)

看起来域名没有通过某种方式传递,即使在我的config/services.php文件中我有:

'mailgun' => [
    'domain' => env('mydomain.com'),
    'secret' => env('<my-mailgun-key>'),
],
Run Code Online (Sandbox Code Playgroud)

我隐藏了上述凭证以确保安全,但在我的实际应用中,它们是正确的值.

请帮忙.

Lav*_*ngs 6

我有一个非常类似的404问题,并尝试了Rogério提到的解决方案.我以为我做得对,但无论如何都试了一下.但滥用env()函数不是我的问题.

我将config/services.php设置为如下所示:

'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN',''),
        'secret' => env('MAILGUN_SECRET',''),
    ],
Run Code Online (Sandbox Code Playgroud)

如果在.env文件中找不到名为MAILGUN_DOMAIN和MAILGUN_SECRET的值,则会提供空字符串.然后,在我的.env文件中,我从Mailgun域信息页面中包含了API Base URLAPI Key.所以.env看起来像这样:

MAILGUN_DOMAIN=https://api.mailgun.net/v3/sandbox123abc.mailgun.org
MAILGUN_SECRET=key-123456abcdef
Run Code Online (Sandbox Code Playgroud)

这些值正如他们应该的那样传递,但仍然是404.看看如何开始在Mailgun 发送电子邮件文档,我看到他们的API URL最后包含"消息" - 我尝试手动添加到.env设置:

MAILGUN_DOMAIN=https://api.mailgun.net/v3/sandbox123abc.mailgun.org/messages
Run Code Online (Sandbox Code Playgroud)

这也没用,但是让我更仔细地看看Laravel吐出的堆栈痕迹.那时我注意到它试图连接的URL是:

https://api.mailgun.net/v3 https://api.mailgun.net/v3 /sandbox123abc.mailgun.org/messages/messages.mime

啊,哈!使用Mailgun的Base API URL不正确!通过重复" https://api.mailgun.net/v3 "部分就可以看出这一点.因此恰当命名的MAILGUN_ DOMAIN设置实际上只需要:

MAILGUN_DOMAIN=sandbox123abc.mailgun.org
Run Code Online (Sandbox Code Playgroud)

现在似乎显而易见,但我花了太多时间搞清楚.我以为我会把它放在那里以防其他人碰巧错过那个细节