在 laravel 错误中使用 mailgun 发送电子邮件
Sending Email with mailgun in laravel error
你好,我只是想在 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
中添加 "guzzlehttp/guzzle": "~4.0"
行来安装 guzzle 包
- 使用
composer update
更新作曲家
- 从 http://www.mailgun.com/ 在 mailgun 上创建您的帐户。创建帐户后,请注意创建的邮件枪子域
sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org
和 API 密钥创建如 key-65c33f1xxxxxxxxxxxxxxxxxxxx
转到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' => 'mail@xxxxxx.com', 'name' => 'Xxxxxxxx'),
'encryption' => 'tls',
'username' => null,
'password' => null,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false
请注意,您不需要为此提供用户名和密码。 Mailgun 会处理这个。
立即尝试发送电子邮件。希望这可以帮助。祝你好运!
我遇到了同样的问题并不断收到以下错误:
客户端错误响应 [url] https://api.mailgun.net/v3//messages.mime 404 not found
关于我正在使用的 Laravel 5.1 在线编写的此错误的文章不多。事实证明,在 config->services 中,默认的 Laravel 5.1 安装附带了 :
'domain' => env('');
'secret' => env('');
出于某种原因,如果您按照默认安装将域和机密包裹在 env 中,则 MailGunTransport 不会接收它。所以只需将其设置为以下内容:
domain' =>'yourdomain';
'secret' => 'yoursecret';
希望这对您有所帮助,因为我确定我不是唯一可能 运行 关注此问题的人。
只想添加一个可能的错误原因。当我还没有设置授权收件人时,我在使用沙盒模式时收到了这个错误。当我登录 Mailgun 并将目标收件人添加到 "Authorized Recipient" 列表时,错误消失了。
我遇到了这个问题,因为我没有激活我的 mailgun 帐户。激活后一切正常
除非您已将他们添加到授权收件人类别中,否则您将能够向同一域中的人员发送邮件。
如果您将某人添加到授权收件人类别,则 he/she 必须批准该请求,然后才能接收电子邮件。
我还在 Laravel 5.1 中配置 Mailgun 时遇到过一次,对我有用的是以下过程。希望对某人有所帮助:
1) 通过在 composer.json 中添加 "guzzlehttp/guzzle": "5.0" 行来安装 guzzle 包,如下所示:
"require": {
"guzzlehttp/guzzle": "~5.0"
},
2) 在终端中使用 sudo composer update
更新作曲家。
3) 重新启动 Apache。
4) 在 http://www.mailgun.com 中创建帐户。它将创建 Sub Domain
和 API Key
.
5) 在 .env
中添加 Sub Domain
和 API Key
,如下所示:
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,
希望对大家有用。
你好,我只是想在 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
更新作曲家
- 从 http://www.mailgun.com/ 在 mailgun 上创建您的帐户。创建帐户后,请注意创建的邮件枪子域
sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org
和 API 密钥创建如key-65c33f1xxxxxxxxxxxxxxxxxxxx
转到
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' => 'mail@xxxxxx.com', 'name' => 'Xxxxxxxx'), 'encryption' => 'tls', 'username' => null, 'password' => null, 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false
"guzzlehttp/guzzle": "~4.0"
行来安装 guzzle 包
请注意,您不需要为此提供用户名和密码。 Mailgun 会处理这个。
立即尝试发送电子邮件。希望这可以帮助。祝你好运!
我遇到了同样的问题并不断收到以下错误: 客户端错误响应 [url] https://api.mailgun.net/v3//messages.mime 404 not found
关于我正在使用的 Laravel 5.1 在线编写的此错误的文章不多。事实证明,在 config->services 中,默认的 Laravel 5.1 安装附带了 :
'domain' => env('');
'secret' => env('');
出于某种原因,如果您按照默认安装将域和机密包裹在 env 中,则 MailGunTransport 不会接收它。所以只需将其设置为以下内容:
domain' =>'yourdomain';
'secret' => 'yoursecret';
希望这对您有所帮助,因为我确定我不是唯一可能 运行 关注此问题的人。
只想添加一个可能的错误原因。当我还没有设置授权收件人时,我在使用沙盒模式时收到了这个错误。当我登录 Mailgun 并将目标收件人添加到 "Authorized Recipient" 列表时,错误消失了。
我遇到了这个问题,因为我没有激活我的 mailgun 帐户。激活后一切正常
除非您已将他们添加到授权收件人类别中,否则您将能够向同一域中的人员发送邮件。 如果您将某人添加到授权收件人类别,则 he/she 必须批准该请求,然后才能接收电子邮件。
我还在 Laravel 5.1 中配置 Mailgun 时遇到过一次,对我有用的是以下过程。希望对某人有所帮助:
1) 通过在 composer.json 中添加 "guzzlehttp/guzzle": "5.0" 行来安装 guzzle 包,如下所示:
"require": {
"guzzlehttp/guzzle": "~5.0"
},
2) 在终端中使用 sudo composer update
更新作曲家。
3) 重新启动 Apache。
4) 在 http://www.mailgun.com 中创建帐户。它将创建 Sub Domain
和 API Key
.
5) 在 .env
中添加 Sub Domain
和 API Key
,如下所示:
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,
希望对大家有用。