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