Yii2 Swiftmailer отправляет одно и то же письмо первым - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь отправить электронную почту swiftmailer в foreach.Но он всегда отправляет только на первое электронное письмо адресату раз количество пользователей.(скажем, есть 3 пользователя, он отправит 3 письма первому пользователю).Я проверил, что на каждой итерации sendmail есть разные адреса электронной почты, этот адрес находится в $ mail instance ($ email-> getTo ()), и до тех пор, пока он не может отправлять электронную почту (т.е. на localhost), он работает нормально.Создает 3 электронных письма с 3 разными адресами.Но когда он действительно может отправить его через SMTP, он отправит все письма одному и тому же человеку с тем же отрисованным текстом.

Я думаю, что проблема связана с $ app-> mailer-> compose, но я не совсем уверен,(кажется, что этот экземпляр хранит свои данные, и его нельзя переписать, пока приложение не перезагрузится)

Контроллер:

foreach ($invitations as $invitation_id) {
            $model = Invitation::findOne($invitation_id);
            if (!empty($model)) {
                if (!$model->sendMail('Test mail')) {
                    $errors[] = $model->userName;
                }
            } else {
                $errors[] = "Non existing $invitation_id?";
            }
        }

Приглашение модели:

public function sendMail ($text){
    $user = User::findOne($this->user_id);
    $email = Yii::$app->mailer->compose('layouts/bulk-email', ['user' => $user, 'text' => $text])
        ->setFrom('test@test.com')
        ->setTo($user['mail'])
        ->setSubject('Test subject');
    return $email->send();
    }

Я пыталсяиспользуя метод sendMultiple (сначала создавая сообщения в массив, а затем отправляя их все сразу), но вместо этого все они были отправлены 6 раз по первому адресу.

Есть ли что-то очевидное, чего мне не хватает?

1 Ответ

0 голосов
/ 31 января 2019

На самом деле проблема заключалась в том, что localhost не кэширует ответы ldap, а сервер dev.Таким образом, проблема заключалась в том, что Мухаммед Омер Аслам несколько предложил :)

...