Greetings,
i need to send email to several recipients that are stored in a table named mail which has a field called email.
In my controller i created an action that Query the table mail for the emails.
Later i tried to use the implode() function separated by comma, but obviously it didn't work because of mailer policies. It generated the wrong format -> "[email protected], [email protected], [email protected]".
Tried also a for each loop and the serialize() function without success.
The json_encode() function is close to what i need, separate an array of emails to something like -> "[email protected]", "[email protected]", "[email protected]". But it appends the field name before the value and it is not accepted by mailer policies.
So far i'm stuck with the following code:
public function actionSucesso()
{
$query = new Query;
$query->select('email')
->from('mail');
$command = $query->createCommand();
$enderecos = $command->queryAll();
$enviar = json_encode($enderecos);
Yii::$app->mailer->compose()
->setFrom('[email protected]')
->setTo($enviar)
->setSubject('Oferta de jogo no site da ATF.')
->setTextBody('Aceda em: http://atf.besaba.com/index.php?r=playschedule%2Findex2')
->send();
return $this->render('sucesso');
}
I think in order for the mailer to work and send the message the correct format needs to be: ->setTo("[email protected]", "[email protected]", "[email protected]")
Is there a way of solving this problem? Many thanks in advance.
To get array of email with numeric indexes call
queryAll()
method with$fetchMode
parameter \PDO::FETCH_COLUMN, and then just pass returned array to mailer'ssetTo()
method. Like thisSee queryAll() documentation and list of pdo constant including available fetch modes starting with PDO::FETCH_. Also assuming you are using yii2 default mailer, look for swiftmailer documentation about how to set recipients