我正试着用foreach中的swiftmailer发送电子邮件。但它总是只发送给第一个电子邮件收件人乘以用户数。(假设有3个用户,它将向第一个用户发送3封邮件)。我已经检查了sendmail的每次迭代都有不同的电子邮件地址,该地址在$email实例($ email ->getTo())中,且只要它不能发送电子邮件(即。在本地主机上),它工作得很好。它创建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次到第一个地址。
有什么明显的我遗漏了什么吗?
发布于 2019-01-31 14:45:17
实际问题是localhost没有缓存ldap回答,而是dev服务器缓存。因此,问题实际上是Muhammad Omer Aslam在某种程度上建议的:)
https://stackoverflow.com/questions/54439658
复制相似问题