【发布时间】:2016-03-07 20:31:45
【问题描述】:
我需要批量发送邮件,每封邮件都有唯一的信息。我正在尝试 foreach 循环,但我不断收到 Allowed memory size of 104857600 bytes 用尽(试图分配 66 个字节) 错误。 是否可以使用 swiftmailer 执行 foreach,或者有其他方式(消息包含唯一令牌)。代码:
$users = Users::find()->where(['email' => $emails])->all();
foreach($users as $user):
$user->scenario = 'saveToken';
$token = hash('sha256',microtime() . Yii::$app->security->generateRandomString(32));
$user->token = $token;
$user->save();
Email::oldUsers($user->email, $token);
endforeach;
发送电子邮件:
static function oldUsers($userEmail, $token)
{
Yii::$app->mailer->compose('_oldUsers', ['token' => $token])
->setFrom('no-reply@sketchlist.com')
->setTo($userEmail)
->setBcc(['vlad@sketchlist.com'])
->setSubject('Sketchlist Account Activation')
->send();
}
【问题讨论】:
-
您可能会采取一些措施来产生此错误。在创建大量收件人时,您可能正在耗尽内存。 ?尝试一次收到一封电子邮件,而不是一次尝试所有电子邮件?
标签: php email yii2 swiftmailer