如何使用swiftmailer发送邮件 - Yii2

时间:2017-01-09 12:38:18

标签: php yii2 swiftmailer

我尝试在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经理)发送电子邮件进行一些审核,然后发布帖子。向公众发布。谢谢。

1 个答案:

答案 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)
// ...