Я пытаюсь отправить электронную почту 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 раз по первому адресу.
Есть ли что-то очевидное, чего мне не хватает?