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

时间:2015-02-02 20:47:17

标签: laravel mailgun

您好我一直在尝试在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,

);

6 个答案:

答案 0 :(得分:29)

请按照以下步骤操作

  1. 首先,在"guzzlehttp/guzzle": "~4.0"
  2. 中添加composer.json行,安装guzzle包
  3. 使用composer update
  4. 更新作曲家
  5. http://www.mailgun.com/的邮件枪上创建您的帐户。创建帐户后,请注意创建的邮件枪子域名如sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org和创建的API密钥key-65c33f1xxxxxxxxxxxxxxxxxxxx
  6. 转到config/services.php文件并替换

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

    'mailgun' => array(
        'domain' => 'sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org',
        'secret' => 'key-65c33f1xxxxxxxxxxxxxxxxxxxx',
    ),
    

    如果您想创建自己的子域,可以创建并分配到域(作为替代)

  7. 像这样配置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
    
  8. 请注意,您无需为此提供用户名和密码。 Mailgun会处理这个问题。

    立即尝试发送电子邮件。希望这可以帮助。祝你好运!

答案 1 :(得分:10)

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

答案 2 :(得分:1)

我遇到了同样的问题并且一直收到以下错误: 客户端错误响应[url] https://api.mailgun.net/v3//messages.mime 404找不到

关于我正在使用的Laravel 5.1在线编写的这个错误,没有太多的内容。事实证明,在config-&gt;服务中,默认的Laravel 5.1安装包含:

private int checkForEditText() { for (int i = 0; i < yourListSize; i++) { if (TextUtils.isEmpty(youlistSize.get(i))) { //return positin of empty cell return i; } } //if no cell is empty it retur -1 return -1; }

'domain' => env('');

出于某种原因,如果你按照默认安装将你的域名和密码保存在env中,MailGunTransport就不会把它拿起来。所以只需将其设置为以下内容:

'secret' => env('');

domain' =>'yourdomain';

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

答案 3 :(得分:0)

我遇到了这个问题,因为我没有激活我的mailgun帐户。一旦激活,一切正常

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我还在Laravel 5.1中配置了Mailgun,并且对我有用的是以下过程。希望它可以帮助某人:

1)通过添加&#34; guzzlehttp / guzzle&#34;:&#34; 5.0&#34;安装guzzle包。在composer.json里面的行如下:

"require": {
    "guzzlehttp/guzzle": "~5.0"
},

2)使用终端中的sudo composer update更新作曲家。

3)重启Apache。

4)在http://www.mailgun.com中创建帐户。它会创建Sub DomainAPI Key

5)在Sub Domain中添加API Key.env,如下所示:

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,

我希望这适合所有人。