如何使用php mailer仅在收件人地址上显示相关电子邮件

如何使用php mailer仅在收件人地址上显示相关电子邮件,php,phpmailer,Php,Phpmailer,使用phpmailer发送电子邮件时,如何隐藏其他电子邮件?我从数据库里收到电子邮件。 代码向所有人发送邮件,但在至的标题上显示所有电子邮件。请帮助我,我的代码如下: $stmt=$conn->prepare(“从订阅者中选择*); $stmt->execute(); $results=$stmt->fetchAll(PDO::FETCH_ASSOC); foreach($结果为$行){ $mail->addAddress($row['email']); } 您可以在循环中添加send函数,但是

使用phpmailer发送电子邮件时,如何隐藏其他电子邮件?我从数据库里收到电子邮件。 代码向所有人发送邮件,但在的标题上显示所有电子邮件。请帮助我,我的代码如下:

$stmt=$conn->prepare(“从订阅者中选择*);
$stmt->execute();
$results=$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($结果为$行){
$mail->addAddress($row['email']);
}

您可以在循环中添加send函数,但是在大型数据集上这会耗费大量资源

$stmt = $conn->prepare("SELECT * FROM subscribers");
$stmt->execute();
$results= $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $row){
    $mail->addAddress($row['email']); 
    $mail->Send();
    $mail->clearAddresses();
}
您还可以将此作为一种更有效的方法的参考

正如上面评论中提到的
KIKO软件
,如果电子邮件没有针对每个用户进行个性化,那么您可以在循环中使用
$mail->addBcc($row['email'])
,并批量发送所有电子邮件

// add a main email address
$mail->addAddress('an_email_here');
foreach($results as $row){
    // then just bcc other emails.
    $mail->addBcc($row['email'])
}
$mail->Send()

注意:这也会向用户显示电子邮件只是
BCC
ed

好的,您不希望电子邮件地址出现在电子邮件的
to
字段中。我现在明白了。我想向表中的所有订阅者发送电子邮件,但只向订阅者的收件人显示相关电子邮件。如果你想向每个订阅者发送一封单独的电子邮件,或多或少类似于jpneey的回答。但是也有
$mail->addBcc($row['email'])
选项。所谓的“盲拷贝”。请参阅:这个答案需要注意:正如您所提到的,一次发送一封邮件非常耗费资源,而且速度非常慢。这意味着当脚本发送了50-100封电子邮件时,它将超时并退出(默认值为30秒后)。因此,有必要使用函数
set_time_limit([x秒])以避免脚本突然停止。。。。但是当然有比使用这种方法更好的解决方案:)抱歉,phpmailer我不熟悉,所以我添加了上面的内容,我得到了错误“消息正文为空”,然后我将正文包含在循环中,我现在收到了重复的电子邮件,收件人标题没有更改。第二个选项给了我相同的结果,我将整个代码更改为第二个结果,头仍然是same@the_guru请在上面的代码中添加更多详细信息,以便我们了解您是如何发送电子邮件的。当您链接到正确的示例时,您的代码遗漏了一行关键代码。您必须在循环中的
send()
之后调用
$mail->clearAddresses()
,否则您将发送比预期多得多的邮件,因为
addAddress
添加了一个地址,它不会设置收件人列表。谢谢@Synchro。对不起,关于那件事。我已经更新了我的答案