我在使用Laravel发送邮件时使用Mailgun服务。但是,我今天已经确定了这一点,它刚刚停止工作。我在.env
,config/services.php
和config/mail.php
中输入了所有正确的信息。但是,我仍然收到以下错误:
ClientException in Middleware.php line 69:
Client error: 404
看起来域名没有通过某种方式传递,即使在我的config/services.php
文件中:
'mailgun' => [
'domain' => env('mydomain.com'),
'secret' => env('<my-mailgun-key>'),
],
我隐藏了上述凭据以确保安全,但在我的实际应用中,它们是正确的值。
请帮忙。
答案 0 :(得分:6)
我遇到了一个非常类似的404问题,并尝试了Rogério提到的解决方案。我以为我做得对,但无论如何都试了一下。但是滥用env()函数不是我的问题。
我将config / services.php设置为如下所示:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN',''),
'secret' => env('MAILGUN_SECRET',''),
],
如果在.env文件中找不到名为MAILGUN_DOMAIN和MAILGUN_SECRET的值,则会提供空字符串。然后,在我的.env文件中,我从Mailgun域信息页面中添加了 API基本网址和 API密钥。所以.env看起来像这样:
MAILGUN_DOMAIN=https://api.mailgun.net/v3/sandbox123abc.mailgun.org
MAILGUN_SECRET=key-123456abcdef
值正在传递,但仍然是404.查看Mailgun上的How do I start sending email文档,我看到他们的API URL末尾包含“消息” - 我尝试手动添加到.env设定:
MAILGUN_DOMAIN=https://api.mailgun.net/v3/sandbox123abc.mailgun.org/messages
这也没有用,但是让我更仔细地看看Laravel吐出的堆栈痕迹。那时我注意到它试图连接的URL是:
https://api.mailgun.net/v3的 https://api.mailgun.net/v3 强> /sandbox123abc.mailgun.org/messages/messages.mime
阿公顷!使用Mailgun的基本API网址不正确!通过重复“https://api.mailgun.net/v3”部分就可以看出这一点。所以恰当名为MAILGUN_ DOMAIN 的设置确实需要:
MAILGUN_DOMAIN=sandbox123abc.mailgun.org
现在看来显而易见,但我花了太多时间搞清楚。我以为我会把它放在那里以防其他人碰巧错过那个细节
答案 1 :(得分:3)
我遇到与你相同的问题,并通过删除env()调用来解决它。 那是因为env将在第一个参数中返回env变量的值(而不是参数的值),否则返回第二个参数。
所以:
'mailgun' => [
'domain' => 'mydomain.com',
'secret' => '<my-mailgun-key>',
],
试试。