1

我的数据库中有一个表,其中包含要发送的电子邮件。脚本作为 cron 作业定期运行,以从表中读取数据并通过 SMTP 服务器发送电子邮件。我在这里使用 PHPMailer 进行工作。该脚本运行一个循环发送电子邮件,直到表中的所有电子邮件都已发送。

问题是大多数连续发送的电子邮件都有一个共同的主题。因此,当循环运行时,不知何故,所有发送的电子邮件都有一个很长的“收件人”列表。因此,基本上,如果 5 个电子邮件条目(地址不同)具有相同主题和相同的内容,那么它最终只会在“收件人”字段中发送 1 封具有 5 个地址(每个电子邮件条目之一)的电子邮件。这会将每个人的电子邮件地址显示给列表中的其他所有人。这是不可取的,并且电子邮件必须仅发送给它所针对的那个人。

我不知道这里在玩什么。有什么建议么?

4

3 回答 3

2

你在做这样的事情吗?

$mailer = new PHPMailer();

while($row = fetch_from_db()) {
   $mailer->AddAddress($row['email']);
   $mailer->send();
}

如果是这样,你需要做一个

$mailer->ClearAllRecipients()

在您发送每封电子邮件后,您可以从一个“新”To:列表开始。

于 2013-02-27T22:17:58.420 回答
1
while($row = fetch_from_db()) {
   $mailer->AddAddress($row['email']);
   $mailer->send();
   $mailer->ClearAllRecipients()
}
于 2018-10-04T13:58:42.953 回答
0

1,从你的数据库中获取联系人

$contacts = 'GET CONTACTS ARRAY FROM DB'
        if(!empty($contacts)){
            foreach ($contacts as $crt_contact){
               $emails[] = $crt_contact->email ;
            }
        }

第二次使用以下内容创建“to”字段

$to = implode(',', array_unique($emails));

使用$to发送邮件()函数

于 2013-02-27T22:50:48.633 回答