【问题标题】:Laravel 5.1 Send mail to all users in foreach [GuzzleHttp\Exception\ClientException] Client error: 400Laravel 5.1 向foreach中的所有用户发送邮件 [GuzzleHttp\Exception\ClientException] 客户端错误:400
【发布时间】:2015-11-19 07:01:58
【问题描述】:

我正在尝试向数据库中的所有用户发送电子邮件,但收到以下错误:[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('foo.bar@gmail.com', 'Foo Bar')->subject('New code, new chances!');
    });
}

【问题讨论】:

  • 您是否证明$user->email 实际上是有效的?
  • 是的,所有电子邮件都有效。

标签: php laravel laravel-5.1 guzzle


【解决方案1】:

[GuzzleHttp\Exception\ClientException] 客户端错误:400
用于 URL 未找到
检查 config/mail.php 中的 host url,host url 可能是错误的

【讨论】:

  • 如果我将$user->email 替换为我自己的电子邮件,它可以正常工作。所以我觉得host url还可以(smtp.mailgun.org)?
【解决方案2】:

不确定你是否让它工作,但我今天遇到了完全相同的问题,我不知道出了什么问题,因为我在之前的 Laravel 项目中使用 mailgun 做了完全相同的实现。然后我在配置中发现了问题。

所以,这里是小故障..我不知道它是在哪个版本中更改的,但是在 config/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)

希望这会有所帮助。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2021-02-06
    • 2016-01-12
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多