Laravel - 如何向所有用户发送电子邮件

时间:2014-09-28 16:12:48

标签: email laravel laravel-4

我正在努力制作一个向我订阅的用户发送电子邮件的代码。我想根据用户默认语言传递正文,任何人都可以帮助我吗?

我的代码:

if($newsletter->save())
            {
                //get users to send to
                $users = User::where('newsletter', '=', '1')->Where('activated', '=', '1')->get();

                //Send to all users subscribed
                foreach($users as $user)
                {
                    //set info according to user default lang
                    if($user->default_lang == 'pt')
                    {
                        $body = $newsletter_pt;
                        $subject = Input::get('subject_PT');
                    }
                    elseif($user->default_lang == 'de')
                    {
                        $body = $newsletter_de;
                        Input::get('subject_DE');
                    }

                    $data = array(
                        'body' => $body,
                        'subject' => $subject
                    );

                    $from_name = Input::get('from_name');
                    $from_email = Input::get('from_email');

                    //QUEUE The Newsletters to send
                    Mail::queue('admin.newsletters.template1', $data, function($message) use ($user, $subject, $from_name, $from_email)
                    {
                        $message->from($from_email, $from_name);
                        $message->bcc($user->email, $user->name);
                        $message->subject($subject);
                    });

                } //end foreach

                return Redirect::To('admin/newsletters')->with('message', array("1" => "Newsletter enviada com sucesso !"));
            }

非常感谢;)

1 个答案:

答案 0 :(得分:0)

在致电$data之前,请确保Mail::queue()数组包含您希望传递到视图中的信息。它应该将$body$subject变量传递给您的视图。

您也可以尝试使用Mail::send()代替Mail::queue(),看看它是否有所作为(如果您没有使用排队系统)。有时,queue()方法在序列化Eloquent模型时可能会绊倒,因此如果$newsletter_pt$newsletter_de是Eloquent模型,则它们可能无法完整地显示在视图中。