我尝试在Yii2中使用swiftmailer发送电子邮件。我还是这个框架的初学者。这是我的基本代码:
public function sendMail($email)
{
if ($this->validate()) {
$email = Yii::$app->params['adminEmail'];
$mailto = 'user@gmail.com'; // need to change
$isi = "blablabla";
Yii::$app->mailer->compose("@app/mail/layouts/html", ["content" => $isi])
->setTo($mailto)
->setFrom($email)
->setSubject('coba')
->send();
return true;
}
return false;
}
在我的情况下,我想设置一个' setTo'基于我的usr
表。我usr
表的字段:
id | username | manager | email | type |
1 | fauzi | arie | fauzi@gmail.com | user |
2 | arie | rian | arie@gmail.com | approver |
例如,当id = 1登录的用户然后他创建一个新帖子并且点击提交后,该操作还会向id = 2的用户(fauzi经理)发送电子邮件进行一些审核,然后发布帖子。向公众发布。谢谢。
答案 0 :(得分:0)
注意:我假设您的usr
表格中包含名为User
的模型,然后将其更改为适合您的代码
您还可以提供一系列电子邮件地址 喜欢
->setTo(['email1@email.com', 'email1@email.com' => 'Name Surname'])
您想知道的是您想要获得哪些用户,可能会为activerecord添加一些条件......
$users = User::find()->all();
或
// or any condition you need in your application, this is just example
$users = User::find()->andWhere(['type' => 'approver'])->all();
然后Variant #1
你可以循环播放所有记录
foreach ($users as $user) {
// you can add here some conditions for different types of users etc
// ... your code to send email ...
->setTo([$user->email => $user->username])
// or just
// ->setTo($user->email)
}
或Variant #2
您可以先收到所有电子邮件
$emails = \yii\helpers\ArrayHelper::getColumn($users, 'email');
// ... your code to send email ...
->setTo($emails)
// ...