Как отправить динамическое электронное письмо нескольким пользователям (адресам электронной почты) из таблицы базы данных в Laravel? - PullRequest
0 голосов
/ 17 апреля 2019

Кто-нибудь может подсказать, как лучше всего или как я могу отправить электронное письмо всем пользователям, которые находятся в моей таблице news_subscibers, с динамическими данными из формы?Я пытался и смог отправить письмо на жестко закодированное письмо.

 public function sendNewsEmail(Request $request)
{
    $this->validate($request,[
      'subject' => 'bail|string|required|string|max:100',
      'bodymessage' => 'bail|string|required|string|min:10',
    ]);

    $data = array(
      'subject' => $request->subject,
      'bodymessage' => $request->bodymessage
    );


    $subscriber_emails = NewsSubscriber::pluck('subs_email')->toArray();

    foreach ($subscriber_emails as $mail)
    {
    Mail::send('email.news-email', $data, $mail,  function($message) use ($data, $mail){
          $message->from('not_reply@sik.org');
          $message->to('abc@gmail.com');
          $message->cc($mail);
          $message->subject($data['subject']);
      });

      Session::flash('success', 'Your message was sent!');
      return redirect()->back();

    };


}

Я хотел бы отправить электронное письмо всем пользователям в таблице news_subscribeers.

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

вы просто передаете свой массив в $message->to($subscriber_emails) не нужно цикл foreach для отправки электронной почты нескольким пользователям

Mail::send('email.news-email', $data, $mail,  function($message) use ($data, $subscriber_emails){
      $message->from('not_reply@sik.org');
      $message->to($subscriber_emails);
      $message->subject($data['subject']);
  });
0 голосов
/ 17 апреля 2019

Вы можете использовать mailable для отправки нескольких писем

создание нового почтового сообщения

php artisan make:mail SampleMail

эта команда сгенерирует файл в app/mail/SampleMail.php опционально напишите некоторую логику в классе, который можно отправить

вызов по почте в контроллере с использованием

$user = User::get(); // fetch user's to send mails
Mail::to($user)->send(new SampleMail()); 

документы, отправляемые по почте - https://laravel.com/docs/5.8/mail#generating-mailables

0 голосов
/ 17 апреля 2019

У вас есть флеш-сообщение об успешном завершении и ответ в цикле $subscriber_emails.Это приводит к отправке только первого письма, затем цикл останавливается и возвращает ответ о перенаправлении.

Поместите эти строки после, чтобы цикл продолжался для всех писем.

public function sendNewsEmail(Request $request)
{
    // ...


    $subscriber_emails = NewsSubscriber::pluck('subs_email')->toArray();

    foreach ($subscriber_emails as $mail)
    {
        Mail::send('email.news-email', $data, $mail, function ($message) use ($data, $mail) {
            $message->from('not_reply@sik.org');
            $message->to('abc@gmail.com');
            $message->cc($mail);
            $message->subject($data['subject']);
        });
    }

    Session::flash('success', 'Your message was sent!');

    return redirect()->back();
}

(Предполагая, что этоваша проблема. Если нет, вам следует добавить любые сообщения об ошибках или неожиданное поведение, которое вы испытываете.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...