こんにちは私は単にメールを送信しようとしています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,
);
次の手順を実行します
"guzzlehttp/guzzle": "~4.0"
内にcomposer.json
行を追加してguzzleパッケージをインストールしますcomposer update
を使用してcomposersandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org
のように作成されたメールガンサブドメインとkey-65c33f1xxxxxxxxxxxxxxxxxxxx
のように作成されたAPIキーに注意してください。config/services.php
ファイルに移動して置き換えます
'mailgun' => array(
'domain' => '',
'secret' => '',
),
と
'mailgun' => array(
'domain' => 'sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org',
'secret' => 'key-65c33f1xxxxxxxxxxxxxxxxxxxx',
),
独自のサブドメインを作成する場合は、ドメインを作成して割り当てることができます(代わりに)
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がこれを処理します。
今すぐメールを送信してみてください。お役に立てれば。幸運を!
エラーの考えられる理由を1つ追加したかっただけです。承認された受信者をまだ設定していないときに、サンドボックスモードの使用中にこのエラーが発生しました。 Mailgunにログインし、目的の受信者を「承認された受信者」リストに追加すると、エラーはなくなりました。
同じ問題が発生し、次のエラーが発生し続けました:クライアントエラー応答[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';
この問題に遭遇したのは私だけではないと確信しているので、これがお役に立てば幸いです。
また、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 Domain
とAPI 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,
これが皆さんにとってうまくいくことを願っています。
Mailgunアカウントをアクティブ化していないため、この問題が発生しました。アクティベートされると、すべて正常に機能しました
許可された受信者カテゴリに追加しない限り、同じドメインの人にメールを送信できます。許可された受信者カテゴリに誰かを追加すると、その人はリクエストを承認する必要があり、その後は電子メールのみを受信できます。