【问题标题】:Can't use an array in Swift Mailer function不能在 Swift Mailer 函数中使用数组
【发布时间】:2014-03-21 04:54:29
【问题描述】:

我正在使用 Swift Mailer 向用户发送电子邮件。我按照脚本一次向多个用户发送电子邮件。

$j=0;
while($row = mysql_fetch_assoc($email))
{
    $message[$j]->addTo($row['email_invited']);
    $mailer->send($message[$j]);
    $j++;
}

执行此操作时出现以下错误:

Fatal error: Cannot use object of type Swift_Message as array in
/home/public_html/example.com/people.php on line 21

如果我尝试发送这样的电子邮件:

while($row = mysql_fetch_assoc($email))
{
    $message->addTo($row['email_invited']);
}
$mailer->send($message);

它正常发送电子邮件并且每个用户都会收到它,但问题是每个用户都可以看到其他用户与他一起收到的电子邮件。所以基本上在“收件人”字段中,每封电子邮件都是绑定的,因此每个用户都可以看到所有其他电子邮件地址。 我想要实现的是每个用户都应该只收到一封个性化的电子邮件,即使它是批量发送的。这就是为什么我尝试使用数组和单独的电子邮件但出现错误的原因。 知道如何实现吗?

【问题讨论】:

    标签: php email swiftmailer


    【解决方案1】:

    怎么样。我认为您需要在每个循环中创建新的消息实例(也可能是邮件程序)。

    while($row = mysql_fetch_assoc($email))
    {
        $mailer = Swift_Mailer::newInstance($transportName);
        $message = Swift_Message::newInstance($subject);
        $message->addTo($row['email_invited']);
        $mailer->send($message);
    }
    

    【讨论】:

    • 不,仍然收到所有电子邮件。
    • 我告诉你这里实际发生了什么,如果我在数据库中有 5 封电子邮件,它会向第一个用户发送 5 封电子邮件,向第二个用户发送 4 封电子邮件,依此类推。
    • 在这五封发送给第一个用户的电子邮件中,第一封电子邮件仅包含他的地址,第二封电子邮件包含他和第二个用户的地址,依此类推。
    • Shanil Soni 是正确的。也许 :D 看到我的答案。如果它的行为是由这个引起的,那应该可以解决。
    • 我错过了,它只是在创建一个新实例,感谢 bdw,它工作得很好:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多