Yii2 - 邮件程序 - 向数据库中的电子邮件行发送邮件

时间:2015-06-14 09:12:06

标签: arrays string yii2 send mailer

问候语,

我需要向存储在名为mail的表中的多个收件人发送电子邮件,邮件中包含一个名为email的字段。

在我的控制器中,我创建了一个查询电子邮件的表邮件的操作。

后来我尝试使用逗号分隔的implode()函数,但显然它因邮件策略而无法正常工作。 它生成了错误的格式 - > " email1@mail.com,email2 @mail.com,email3 @mail.com"。

还尝试了每个循环和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& #34;," mail3@mail.com")

有没有办法解决这个问题? 非常感谢提前。

1 个答案:

答案 0 :(得分:1)

要获取带有数字索引的电子邮件数组,请使用<xsl:template match="text()"> <xsl:value-of select="replace(., 'xxx', 'yyy')"/> </xsl:template> 参数 \ PDO :: FETCH_COLUMN 调用queryAll()方法,然后将返回的数组传递给邮件程序&#39; s $fetchMode方法。喜欢这个

setTo()

请参阅queryAll() documentationlist of pdo constant,包括以 PDO :: FETCH _ 开头的可用提取模式。另外假设您使用的是yii2默认邮件程序,请查找有关如何设置收件人的swiftmailer documentation