Yii2 - 邮件程序 - 将消息发送到数据库中的电子邮件行
Yii2 - mailer - send message to email rows in database
您好,
我需要向多个收件人发送电子邮件,这些收件人存储在 table 命名邮件中,其中有一个名为 email 的字段。
在我的控制器中,我创建了一个操作来查询 table 邮件中的电子邮件。
后来我尝试使用用逗号分隔的 implode() 函数,但显然由于邮件程序策略它不起作用。
它生成了错误的格式 -> "email1@mail.com, email2@mail.com, email3@mail.com".
还尝试了 for each 循环和 serialize() 函数但没有成功。
json_encode() 函数接近我的需要,将一组电子邮件分隔成类似 -> "email1@mail.com"、"email2@mail.com"、"email3@mail.com" 的内容。
但它在值之前附加了字段名称,邮件程序策略不接受它。
到目前为止,我坚持使用以下代码:
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('atf@website.com')
->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');
}
我认为为了让邮件程序正常工作并发送邮件,正确的格式需要是:->setTo("mail1@mail.com", "mail2@mail.com", "mail3@mail.com")
有没有办法解决这个问题?
非常感谢。
要获取带有数字索引的电子邮件数组,请使用 $fetchMode
参数 \PDO::FETCH_COLUMN 调用 queryAll()
方法,然后仅将返回的数组传递给邮件程序的 setTo()
方法。像这样
$enderecos = $command->queryAll(\PDO::FETCH_COLUMN);
//$enviar = json_encode($enderecos); <- this line no needed
Yii::$app->mailer->compose()
->setFrom('atf@website.com')
->setTo($enderecos) //you pass an array of email addresses
->setSubject('Oferta de jogo no site da ATF.')
->setTextBody('Aceda em: http://atf.besaba.com/index.php?r=playschedule%2Findex2')
->send();
请参阅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了解如何设置收件人
您好,
我需要向多个收件人发送电子邮件,这些收件人存储在 table 命名邮件中,其中有一个名为 email 的字段。
在我的控制器中,我创建了一个操作来查询 table 邮件中的电子邮件。
后来我尝试使用用逗号分隔的 implode() 函数,但显然由于邮件程序策略它不起作用。 它生成了错误的格式 -> "email1@mail.com, email2@mail.com, email3@mail.com".
还尝试了 for each 循环和 serialize() 函数但没有成功。
json_encode() 函数接近我的需要,将一组电子邮件分隔成类似 -> "email1@mail.com"、"email2@mail.com"、"email3@mail.com" 的内容。 但它在值之前附加了字段名称,邮件程序策略不接受它。
到目前为止,我坚持使用以下代码:
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('atf@website.com')
->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');
}
我认为为了让邮件程序正常工作并发送邮件,正确的格式需要是:->setTo("mail1@mail.com", "mail2@mail.com", "mail3@mail.com")
有没有办法解决这个问题? 非常感谢。
要获取带有数字索引的电子邮件数组,请使用 $fetchMode
参数 \PDO::FETCH_COLUMN 调用 queryAll()
方法,然后仅将返回的数组传递给邮件程序的 setTo()
方法。像这样
$enderecos = $command->queryAll(\PDO::FETCH_COLUMN);
//$enviar = json_encode($enderecos); <- this line no needed
Yii::$app->mailer->compose()
->setFrom('atf@website.com')
->setTo($enderecos) //you pass an array of email addresses
->setSubject('Oferta de jogo no site da ATF.')
->setTextBody('Aceda em: http://atf.besaba.com/index.php?r=playschedule%2Findex2')
->send();
请参阅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了解如何设置收件人