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

Php Yii2 Swiftmailer foreach向第一个发送相同电子邮件至,php,yii2,swiftmailer,Php,Yii2,Swiftmailer,我正试图通过foreach的swiftmailer发送电子邮件。但它总是只发送给第一个电子邮件收件人乘以用户数。(假设有3个用户,它将向第一个用户发送3封邮件)。 我已经检查过sendmail的每个迭代都有不同的电子邮件地址,该地址在$email instance($email->getTo())中,只要它不能发送电子邮件(即在localhost上),它就可以正常工作。它创建了3封电子邮件,其中包含3个不同的地址。但当它实际上可以通过SMTP发送时,它会将所有邮件发送给同一个人,并呈现相同的文本

我正试图通过foreach的swiftmailer发送电子邮件。但它总是只发送给第一个电子邮件收件人乘以用户数。(假设有3个用户,它将向第一个用户发送3封邮件)。 我已经检查过sendmail的每个迭代都有不同的电子邮件地址,该地址在$email 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次到第一个地址


是否有明显的遗漏?

实际问题是localhost没有缓存ldap应答,但开发服务器正在缓存。因此,问题实际上是Muhammad Omer Aslam所建议的:)

您需要将
用户id
与主题一起传递给
sendMail()
,您正在使用
$this->user id
在当前实例中将电子邮件发送到emal。是的,对不起,sendMail是模型邀请中的方法,foreach在控制器中。这不是真正的问题-正如我在上面的代码中所述,我试图从Swiftmailer对象获取邮件地址,这是正确的。但这并没有改变它仍然被发送给第一个用户的事实。