使用Mailgun在Laravel 5.4中发送邮件获取错误代码“401 UNAUTHORIZED`响应:禁止”

时间:2017-04-14 16:32:45

标签: php laravel email mailgun

我正在尝试使用Mailgun在Laravel 5.4项目中发送邮件。我想我正确设置了配置。但是,我收到了此错误消息,例如

  

RequestException.php第111行中的ClientException:   客户端错误:POST https://api.mailgun.net/v3/sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org/messages.mime>导致401 UNAUTHORIZED响应:   禁

这是我的配置:

<。> .env文件

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org
MAILGUN_SECRET=pubkey-1767e**********

在mail.php文件中

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'richi.htoo@gmail.com'),
    'name' => env('MAIL_FROM_NAME', 'Richi Htoo'),
],

在services.php文件中

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
],

我在默认路线中写邮件发送代码,例如

Route::get('/', function () {
//return view('welcome');

    $data = [
        'title' => 'Hi student I hope you like the course',
        'content' => 'This laravel course was created with a lot of love and dedication for you'
    ];

    Mail::send('emails.test', $data, function($message){
        $message->to('white.nuzzle@gmail.com', 'White Nuzzle')->subject('Hello student how are you?');
    });
});

我还安装了Laravel Package“guzzlehttp / guzzle”6.2版发送邮件。

但是当我调用默认的主路由时,我收到了一条错误消息,如上所述。

我无法找到任何解决方案,包括论坛“stackoverflow.com”。

有人可以帮我吗?

7 个答案:

答案 0 :(得分:5)

坦率地说,这是一次非常严峻的考验,我让沙箱的工作方式如下:

  1. 添加了授权收件人 - 显然沙盒无法发送电子邮件 任何人,您需要将它们添加为授权收件人。
  2. 在.env文件中使用正确的凭据,因为services.php使用了typeof(object).GetTypeInfo().Assembly.GetName().Version.ToString()MAILGUN_DOMAIN。请记住MAILGUN_SECRET是私钥,以MAILGUN_SECRET开头,请勿在此处使用公钥
  3. key-
  4. !!!最重要!!!!重新启动您的服务器以加载新的.env文件

答案 1 :(得分:2)

确保检查邮件的凭据,确保它们是正确的。

不要复制公共验证密钥。 请复制私有API密钥

答案 2 :(得分:2)

如果您没有使用美国 Mailgun 地区,您可以在服务配置文件中定义您地区的端点:

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

答案 3 :(得分:1)

默认邮件驱动程序:Mailgun

MAILGUN_DOMAIN=*your-domain*.mailgun.org

MAILGUN_SECRET=pubkey-*your-public-key*

默认邮件驱动程序:SMTP

MAIL_USERNAME=postmaster@*your-domain*.mailgun.org

MAIL_PASSWORD=*your-password*

别忘了php artisan config:clear

答案 4 :(得分:0)

我个人从来没有让沙箱帐户工作。我刚刚在一个多月前做了这件事。 Sandbox从未工作过,但我创建的真实账户却没有。尝试切换到真实帐户,并告诉我这是否适合您。

答案 5 :(得分:0)

转到配置文件夹。并做了一些改变..

'mailgun' => [
    'domain' => env('your_domainxxxxxxx.mailgun.org'),
    'secret' => env('key-xxxxxxxx_private_API_keyxxxx'),
],

错误将得到解决。

答案 6 :(得分:0)

确定, 在文件“ vendor \ laravel \ framework \ src \ Illuminate \ Mail \ Transport \ MailgunTransport.php”中,使用的端点是美国一。

如文档https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions中所述,您拥有美国和欧盟的端点。

如果您是欧洲人,则必须使用“ api.eu.mailgun.net”,否则会收到401。

只需更改端点:Laravel功能强大,他们就会考虑。您可以在config / services.php / mailgun条目中添加一个“端点”键。