web-dev-qa-db-ja.com

laravelエラーでmailgunを使用してメールを送信する

こんにちは私は単にメールを送信しようとしていますlaravelドキュメントを読んだのでとても簡単に見えましたが、エラーが発生した後もエラーが発生し続けるのですが、sendgridはしませんでした動作し、現在mailgunを使用しようとしていますが、問題も発生しています。

これは私のコードです::

$data = array();

        Mail::send('emails.auth.activate', $data, function($message)
        {
            $message->to('[email protected]', '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' => '[email protected]', 'name' => 'Xxxxxxxx'),

    'encryption' => 'tls',

    'username' => '[email protected]',

    'password' => 'xxxxxxxxxxx',

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

    'pretend' => true,

);
9
user3718908

次の手順を実行します

  1. まず、"guzzlehttp/guzzle": "~4.0"内にcomposer.json行を追加してguzzleパッケージをインストールします
  2. composer updateを使用してcomposer
  3. http://www.mailgun.com/ からmailgunでアカウントを作成します。アカウントを作成したら、sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.orgのように作成されたメールガンサブドメインとkey-65c33f1xxxxxxxxxxxxxxxxxxxxのように作成されたAPIキーに注意してください。
  4. config/services.phpファイルに移動して置き換えます

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

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

    独自のサブドメインを作成する場合は、ドメインを作成して割り当てることができます(代わりに)

  5. config/mail.phpを次のように構成します

    'driver' => 'mailgun',
    'Host' => 'smtp.mailgun.org',
    'port' => 587,
    'from' => array('address' => '[email protected]', 'name' => 'Xxxxxxxx'),
    'encryption' => 'tls',
    'username' => null,
    'password' => null,
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false
    

このためにユーザー名とパスワードを指定する必要はないことに注意してください。 Mailgunがこれを処理します。

今すぐメールを送信してみてください。お役に立てれば。幸運を!

29
srbhattarai

エラーの考えられる理由を1つ追加したかっただけです。承認された受信者をまだ設定していないときに、サンドボックスモードの使用中にこのエラーが発生しました。 Mailgunにログインし、目的の受信者を「承認された受信者」リストに追加すると、エラーはなくなりました。

10
MMMTroy

同じ問題が発生し、次のエラーが発生し続けました:クライアントエラー応答[url] https://api.mailgun.net/v3//messages.mime 404が見つかりません

私が使用しているLaravel 5.1についてオンラインで書かれたこのエラーについてはあまり書かれていません。config-> servicesではデフォルトのLaravel = 5.1インストールには以下が付属しています:

'domain' => env('');

'secret' => env('');

何らかの理由で、デフォルトのインストールに従ってドメインとシークレットをenvでラップしたままにすると、MailGunTransportはそれを取得しません。したがって、次のように設定するだけです。

domain' =>'yourdomain';

'secret' => 'yoursecret';

この問題に遭遇したのは私だけではないと確信しているので、これがお役に立てば幸いです。

1
max234435

また、Laravel 5.1でMailgunを構成するのに一度立ち往生しましたが、私にとってうまくいったのは次のプロセスです。誰かが役立つことを願っています。

1)次のようにcomposer.json内に「guzzlehttp/guzzle」:「5.0」行を追加して、guzzleパッケージをインストールします。

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

2)ターミナルでSudo composer updateを使用してcomposerを更新します。

3)Apacheを再起動します。

4) http://www.mailgun.com でアカウントを作成します。 Sub DomainAPI Keyが作成されます。

5)次のようにSub DomainAPI 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,

これが皆さんにとってうまくいくことを願っています。

0
M.J

Mailgunアカウントをアクティブ化していないため、この問題が発生しました。アクティベートされると、すべて正常に機能しました

0
Mark Hague

許可された受信者カテゴリに追加しない限り、同じドメインの人にメールを送信できます。許可された受信者カテゴリに誰かを追加すると、その人はリクエストを承認する必要があり、その後は電子メールのみを受信できます。

0
Akshay Singh