Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在laravel错误中使用邮枪发送电子邮件_Laravel_Mailgun - Fatal编程技术网

在laravel错误中使用邮枪发送电子邮件

在laravel错误中使用邮枪发送电子邮件,laravel,mailgun,Laravel,Mailgun,您好,我只是想用laravel发送一封电子邮件,我阅读了文档,他们让我觉得很简单,但每当我尝试时,我总是一个接一个地出错,我尝试sendgrid不起作用,现在我尝试使用mailgun,但我也遇到了问题 这是我的代码:: $data = array(); Mail::send('emails.auth.activate', $data, function($message) { $message->to('xxxxxxxxx@gmai

您好,我只是想用laravel发送一封电子邮件,我阅读了文档,他们让我觉得很简单,但每当我尝试时,我总是一个接一个地出错,我尝试sendgrid不起作用,现在我尝试使用mailgun,但我也遇到了问题

这是我的代码::

$data = array();

        Mail::send('emails.auth.activate', $data, function($message)
        {
            $message->to('xxxxxxxxx@gmail.com', 'John Doe')->subject('This is a demo!');
        });
这是我得到的错误:

GuzzleHttp \ Exception \ ClientException (400)

Client error response [url] https://api.mailgun.net/v2/mail.xxxxxxx.com/messages.mime [status code] 400 [reason phrase] BAD REQUEST 
邮件配置:

<?php

return array(

    /*
    |--------------------------------------------------------------------------
    | Mail Driver
    |--------------------------------------------------------------------------
    |
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the
    | sending of e-mail. You may specify which one you're using throughout
    | your application here. By default, Laravel is setup for SMTP mail.
    |
    | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "log"
    |
    */

    'driver' => 'mailgun',

    'host' => 'sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org',

    'port' => 587,

    'from' => array('address' => 'mail@xxxxxx.com', 'name' => 'Xxxxxxxx'),

    'encryption' => 'tls',

    'username' => 'xxxxxxx@gmail.com',

    'password' => 'xxxxxxxxxxx',

    'sendmail' => '/usr/sbin/sendmail -bs',

    'pretend' => true,

);
遵循以下步骤

  • 首先,通过在
    composer.json
  • 使用
    composer Update
  • 从中在mailgun上创建您的帐户。创建帐户后,请注意像
    sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org那样创建的邮枪子域和像
    key-65C33F1xxxxxxxxxxxxxxxxx那样创建的API密钥
  • 转到
    config/services.php
    文件并替换

    'mailgun' => array(
        'domain' => '',
        'secret' => '',
    ),
    

    如果您想创建自己的子域,可以创建并分配给域(作为备选方案)

  • 像这样配置
    config/mail.php

    'driver' => 'mailgun',
    'host' => 'smtp.mailgun.org',
    'port' => 587,
    'from' => array('address' => 'mail@xxxxxx.com', 'name' => 'Xxxxxxxx'),
    'encryption' => 'tls',
    'username' => null,
    'password' => null,
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false
    
  • 请注意,您不需要为此提供用户名和密码。邮枪会处理的


    现在尝试发送电子邮件。希望这有帮助。祝你好运

    我也遇到了同样的问题,不断出现以下错误: 找不到客户端错误响应[url]404

    对于我正在使用的Laravel5.1,网上没有多少关于这个错误的文章。事实证明,在配置->服务中,默认的Laravel 5.1安装附带:

    “域”=>env(“”)

    'secret'=>env('')

    出于某种原因,如果您按照默认安装将域和机密包装在env中,MailGunTransport将不会接收它。因此,只需将其设置为以下值:

    domain'=>yourdomain'

    “秘密”=>“你的秘密”


    希望这能有所帮助,因为我确信我不是唯一一个可能遇到这个问题的人。

    只是想为错误添加一个可能的原因。我在使用沙盒模式时收到此错误,当时我还没有设置授权收件人。当我登录Mailgun并将目标收件人添加到“授权收件人”列表时,错误消失了。

    我遇到了这个问题,因为我没有激活我的Mailgun帐户。一旦激活所有工作正常

    您将能够向同一域中的人员发送邮件,除非您已将其添加到授权收件人类别中。
    如果您将某人添加到授权收件人类别,则他/她必须批准请求,然后才能接收电子邮件。

    我在Laravel 5.1中配置邮枪时也遇到过一次问题,下面的过程对我有效。希望它能帮助某人:

    1) 通过在composer.json中添加“guzzlehttp/guzzle”:“5.0”行来安装guzzle包,如下所示:

    "require": {
        "guzzlehttp/guzzle": "~5.0"
    },
    
    MAILGUN_DOMAIN=sandbox8...........3b.mailgun.org
    MAILGUN_SECRET=key-9..................04
    
    2) 使用终端中的
    sudo composer Update
    更新composer

    3) 重新启动Apache

    4) 在中创建帐户。它将创建一个
    子域
    API键

    5) 在
    .env
    中添加
    子域
    API键
    ,如下所示:

    "require": {
        "guzzlehttp/guzzle": "~5.0"
    },
    
    MAILGUN_DOMAIN=sandbox8...........3b.mailgun.org
    MAILGUN_SECRET=key-9..................04
    
    6) 在services.php中添加以下行:

    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],
    
    7) 现在,mail.php如下所示:

    'driver' => 'mailgun',
    'host' => 'smtp.mailgun.org',
    'port' =>  587,
    'from' => ['address' => null, 'name' => null],
    'encryption' => 'tls',
    'username' => null,
    'password' => null,
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
    

    我希望这对你们所有人都有效。

    您能提供更多关于当前邮件配置的信息,以及您在哪里实例化email.auth.activate?实例化是什么意思?我想这应该是视图的路径。我可以向我们展示更多的代码,比如你的邮枪设置在哪里,你在任何libs中的加载位置,你从哪里获取配置设置。我认为要让它像以前一样工作,你还必须设置域并在.env文件中对其进行保密。谢谢,我也有这个404未发现的问题,使用Laravel5.4。文档中有您建议的示例,但实际的代码仍然有
    'domain'=>env('MAILGUN\u domain')、'secret'=>env('MAILGUN\u secret')、
    env()
    。我决定在env文件中设置
    domain
    secret
    ,这样这个文件就不会被修改,只参考env文件中的内容。确保你在.env文件中使用的是密钥,而不是公钥。嘿。。如何添加授权收件人?在MailChimphi中,我们从哪里获得密钥“secret”=>“key-65C33F1xxxxxxxxxxxxxxxxxxxxx”,