Как отправить почту несколькими Laravel - PullRequest
0 голосов
/ 05 июня 2019

Я отправляю 1 аккаунт, но он отправляет 2 раза в 1 аккаунт. Я хочу отправить несколько писем

Laravel

public function get_sendmail(Request $request) {

        $this->validate($request, [
            'email' => 'required|email',
            'subject' => 'min:2',
            'message' => 'min:10']);

        $recipients = [ ["email" => "$request->email"], ["email" => "$request->email"] ];

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

        foreach($recipients as $recipient) {
            // here you declare variables accesable in view file
            $dataToPassToEmailView = [];
            // **key** of this table is variable **name in view**
            $dataToPassToEmailView['recipient'] = $recipient;

            Mail::send('email.contact', $dataToPassToEmailView, function($message) use ($recipient, $data) {
                $message->to($recipient['email']);
                $message->subject($data['subject']);

            });
        }

            return redirect()->back()->with('message', 'success!');

        }

Спасибо

1 Ответ

0 голосов
/ 05 июня 2019

Ваш $recipients был сохранен один и тот же адрес два раза, потому что вы добавляете один и тот же $request->email к обоим из recipients ключ электронной почты.

 $recipients = [ 
                   [
                      "email" => "$request->email"
                   ],
                   [
                      "email" => "$request->email"
                   ] 
              ];

Чтобы решить эту проблему, вы можете отправить$request->email как массив.Если запрос исходит из формы, попробуйте что-то вроде этого:

<form action="{{ route('your-sendmail-route') }} method="YOUR METHOD">
    @csrf
    <label>First email:</label>
    <input name="email[]" type="email" class="email">
    <label>Second email:</label>
    <input name="email[]" type="email" class="email">
    <label>Third email:</label>
    <input name="email[]" type="email" class="email">
    <button type="submit">Send mail</button>
</form>

Когда вы отправляете эту форму, в вашем контроллере вы получаете массив писем, а затем можете перебирать ее:

foreach($request->email as $email) {
    // here you declare variables accesable in view file
     $dataToPassToEmailView = [];
    // **key** of this table is variable **name in view**
     $dataToPassToEmailView['recipient'] = $email;
     Mail::send('email.contact', $dataToPassToEmailView, function($message) use 
         ($recipient, $data) {
             $message->to($email);
                 $message->subject($data['subject']);
            });
     }

Я думаю, это должно решить вашу проблему.

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