2015-11-05 94 views
0

我试图发送一封电子邮件给数据库中的所有用户,但我收到以下错误:[GuzzleHttp \异常\ ClientException]客户端错误:400Laravel 5.1发送邮件给所有用户在foreach [GuzzleHttp Exception ClientException]客户端错误:400

这里是我的代码:

$users = App\User::all(); 

foreach($users as $user) { 
    $code = new App\Code(); 
    $code->code = str_random(10); 
    $code->save(); 

    Mail::send('emails.code', ['code' => $code], function($message) use ($user) 
    { 
     $message->to($user->email)->from('[email protected]', 'Foo Bar')->subject('New code, new chances!'); 
    }); 
} 
+0

您是否证明'$ user-> email'实际上是有效的? – Thelonias

+0

是的,所有的电子邮件都是有效的。 –

回答

0

[GuzzleHttp \异常\ ClientException]客户端错误:400
是找不到网址
检查主机 config/mail.php中的url,主机url可能是错误的

+0

如果我将'$ user-> email'替换为我自己的电子邮件,它可以正常工作。所以我认为主机网址是好的(smtp.mailgun.org)? –

0

不知道你是否有它的工作,但我今天有完全相同的问题,我不知道哪里出了问题,因为我在我之前的Laravel项目中使用mailgun进行了完全相同的实现。然后我在配置中发现了这个问题。

所以,这里是glitch..I不知道哪个版本它被改变,但在配置/ services.php的mailgun配置是现在这个样子,

'mailgun' => [ 
    'domain' => env('MAILGUN_DOMAIN'), 
    'secret' => env('MAILGUN_SECRET'), 
], 

它像在此之前,据我的记忆,

'mailgun' => [ 
    'domain' => env('MAIL_DOMAIN'), 
    'secret' => env('MAIL_SECRET'), 
], 

所以在我.ENV文件,我只是引用MAIL_DOMAIN和MAIL_SECRET环境变量,但我只是意识到在services.php文件,它实际上是引用不同的环境变量 - MAILGUN_DOMAIN和MAILGUN_SECRET。

所以我刚刚添加了这些环境变量,清除了配置缓存,现在它工作得很完美。

希望这有助于(我与Laravel 5.1.23版本BTW工作)。谢谢。

相关问题