我目前正在开发基于Laravel 5.2的应用程序。我需要向用户发送带有重置密码链接的电子邮件,我正在使用mailgun。当我向邮件注册邮件的邮件发送电子邮件时,一切正常。但它是任何其他电子邮件地址时失败。
错误说:
RequestException.php第71行中的ClientException:客户端错误响应[url] https://api.mailgun.net/v3/sandbox *******************************.mailgun.org /messages.mime [状态代码] 400 [原因短语] BAD REQUEST
我尝试了很多解决方案,但没有一个可行。知道为什么会这样吗?也许是由localhost引起的?我在用:
控制器功能:
public function sendEmail() {
$sent = Mail::send('mails.test', [], function ($message) {
$message->to('[email protected]','somename');
$message->subject("Activate Your Account");
$message->getSwiftMessage();
});
if ($sent === 0) {
return redirect('/')
->withErrors('Failed to send activation email.');
}
return redirect('/')
->withSuccess('Mail was sent.');
}
环境数据:
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandbox*****************************.mailgun.org
MAIL_PASSWORD=**********************
MAIL_ENCRYPTION=null
MAILGUN_DOMAIN=sandbox*****************************.mailgun.org
MAILGUN_SECRET=key-*****************************
文件:conf / mail.php配置为.env数据
路线:
Route::get('auth/send','AuthController@sendEmail');
按钮:
<a href="{{action('AuthController@sendEmail')}}" class="btn btn-danger">Test mail</a>
尝试从MAIL_HOST=smtp.mailgun.org
中删除.env
并尝试一下。我在过去遇到了同样的情况,删除MAIL_HOST
为我工作。新的.env
配置看起来像
MAIL_DRIVER=mailgun
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandbox*****************************.mailgun.org
MAIL_PASSWORD=**********************
MAIL_ENCRYPTION=null
MAILGUN_DOMAIN=sandbox*****************************.mailgun.org
MAILGUN_SECRET=key-*****************************
在此之后,从php artisan config:cache
运行php artisan config:clear
和command line
并检查邮件是否有效。