Php Yii2 Swiftmailer foreach向第一个发送相同电子邮件至
我正试图通过foreach的swiftmailer发送电子邮件。但它总是只发送给第一个电子邮件收件人乘以用户数。(假设有3个用户,它将向第一个用户发送3封邮件)。 我已经检查过sendmail的每个迭代都有不同的电子邮件地址,该地址在$email instance($email->getTo())中,只要它不能发送电子邮件(即在localhost上),它就可以正常工作。它创建了3封电子邮件,其中包含3个不同的地址。但当它实际上可以通过SMTP发送时,它会将所有邮件发送给同一个人,并呈现相同的文本 我认为问题在于$app->mailer->compose,但我不是很确定。(该实例似乎正在保存其数据,在应用程序重置之前无法重写) 控制器:Php Yii2 Swiftmailer foreach向第一个发送相同电子邮件至,php,yii2,swiftmailer,Php,Yii2,Swiftmailer,我正试图通过foreach的swiftmailer发送电子邮件。但它总是只发送给第一个电子邮件收件人乘以用户数。(假设有3个用户,它将向第一个用户发送3封邮件)。 我已经检查过sendmail的每个迭代都有不同的电子邮件地址,该地址在$email instance($email->getTo())中,只要它不能发送电子邮件(即在localhost上),它就可以正常工作。它创建了3封电子邮件,其中包含3个不同的地址。但当它实际上可以通过SMTP发送时,它会将所有邮件发送给同一个人,并呈现相同的文本
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对象获取邮件地址,这是正确的。但这并没有改变它仍然被发送给第一个用户的事实。