Yii2 Swiftmailer foreach向第一个发送相同的电子邮件

时间:2019-01-30 11:33:59

标签: php yii2 swiftmailer

我正在尝试通过swiftmailer在foreach中发送电子邮件。但是它总是只向第一个电子邮件收件人发送乘以用户数。 (例如,有3个用户,它将向第一个用户发送3封邮件)。 我检查过sendmail的每个迭代都有不同的电子邮件地址,该地址在$ email实例中($ 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 :(得分:1)

实际问题是localhost不是缓存ldap答案,而dev服务器是。所以,这个问题实际上是什么穆罕默德奥马尔阿斯拉姆有些建议:)