2017-01-09 8 views
2

Yii2でswiftmailerを使ってメールを送ろうとしました。私はまだこのフレームワークの初心者です。これが私の基本的なコードです:私の場合はswiftmailerを使ってメールを送る方法 - Yii2

public function sendMail($email) 
    { 
     if ($this->validate()) { 
      $email = Yii::$app->params['adminEmail']; 
      $mailto = '[email protected]'; // 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; 
    } 

、私は私のusrテーブルに基づいて「setTo」セットアップしたいです。私usrテーブルのフィールド:ID = 1回のログインを持つユーザーは、その後、彼は新しい投稿を作成して、クリックした後に提出し、アクションも、ID = 2(ファウジのマネージャー)と、ユーザーに電子メールを送信します。例えば

id | username | manager | email   | type  | 
1 | fauzi | arie | [email protected] | user  | 
2 | arie  | rian | [email protected] | approver | 

、ポストが公開される前のレビューもあります。ありがとうございました。

+1

最初にすべてのメールを取得することができVariant #2は、あなたのコンフィグmain.phpにメーラーコンポーネントを設定していますファイルは適切ですか? – Chinmay

+0

はい、設定しました。コードを試してみたら、正常に動作しています。しかし、私はdbのテーブルのフィールドの電子メールから 'setTo'を取得する必要があります。 – Putra

答えて

0

注:私はあなたのusr表は

あなたは、電子メールの配列は、あなたがしたいのか

->setTo(['[email protected]', '[email protected]' => 'Name Surname']) 

のように住所が提供できる Userと呼ばれるモデルではない場合、その後、あなたのコードに合わせてそれを変更していると仮定しますどのユーザを取得したいのか知っていれば、アクティブレコードなどに条件を追加することもできます。

$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) 
} 

またはあなたが

$emails = \yii\helpers\ArrayHelper::getColumn($users, 'email'); 
// ... your code to send email ... 
->setTo($emails) 
// ... 
関連する問題