PHP Swiftmailer接收者的名字来自数据库

时间:2015-11-18 13:13:48

标签: php database email foreach swiftmailer

您好我正在使用Swiftmailer发送简报,我想在邮件开头的数据库中使用他们的名字我已成功获取邮件正文和收件人的名字但是它当我想要在正文中它不使用第二个或第三个

的名称时,只抓取数据库中的第一个条目
    foreach ($result as $row) {         
    if ($_POST['test_or_live'] == 'live') { 
        $email[] = array($row['mail'] => $row['firstname']); //for the mail address and firstname in the receiver. works
        $firstname[] = $row['firstname']; //for the firstname in the body. not working
    }

这是我用来发送并将名字放在正文中的foreach

foreach ($email as $mail => $name) {

    foreach ($firstname as $value) {
        $content = str_replace('firstname',$value,$content);
    }

    if (is_int($mail)) {
        $message->setTo($name);
    } 

    else {
        $message->setTo(array($mail => $name));
    }

    $message->setBody($content,'text/html');
    $numSent += $mailer->send($message, $failedRecipients);
}

那么如何让它遍历所有名称并将正确的名称发送到正确的邮件地址

1 个答案:

答案 0 :(得分:0)

在你的循环中

foreach ($firstname as $value) {
    $content = str_replace('firstname',$value,$content);
}

您正在使用名称替换第一次迭代中的模板占位符'firstname'。

由于第一个名称在外部循环中提供为$name

foreach ($email as $mail => $name)

您不需要$firstname[]数组:

foreach ($email as $mail => $name) {
    $content = str_replace('firstname',$name,$content);
    ...