PHP或smtp服务器中不需要的批量电子邮件

时间:2015-11-24 14:23:05

标签: php email

在我的PHP中,如果配置指定不使用PEAR,我有以下代码处理电子邮件:

$headers = '';
foreach($this->headers as $key => $value)
  $headers .= "$key: $value\r\n";
foreach($addresses as $address)
{
  $headers .= "To: $address\r\n";
  if(!mail($address, $subject, $message, $headers))
    return FALSE;
}

正如您所看到的,PHP :: mail()的目的是根据数组$ addresses中的地址逐个将电子邮件发送到邮件服务器。这已经好几年了。

我现在有一个我软件的用户,他们有重复电子邮件的问题,每个电子邮件地址都有不同数量的电子邮件地址。他的配置使用上面的代码,因此每个电子邮件主题/内容被多次发送到各个地址,但到达每个用户邮箱的电子邮件显示To:字段中的多个地址,一些用户报告接收相同的电子邮件超过50次。

我非常确定我的代码不应该受到责备(我第一次使用代码和多次安装时遇到过这种情况)所以我现在不得不问这是不是问题使用smtp服务器,PHP将电子邮件发送到。

我不熟悉这样的服务器,所以: a)是否有一些smtp服务器配置将接收传入的单独寻址电子邮件流,在短时间内评估每个电子邮件的主题和内容,确定它们是相同的电子邮件,然后在具有多个地址的单个电子邮件中转发To:字段?令我感到震惊的是,任何自尊的smtp服务器都可能将此视为一种有效的电子邮件模式,但我不知道google的术语。

b)如果a)正在发生的事情,将在收件人:字段中退回电子邮件,生成发送到收件人:字段中所有先前地址的重复电子邮件吗?

感谢您提前提供的帮助和建议。

1 个答案:

答案 0 :(得分:0)

您的错误代码确实为To邮件功能参数提供了多个$headers标头。要设置接收器,使用$address参数就足够了。当代码中包含少一行时,您的代码应该开始正常工作:

$headers = '';
foreach($this->headers as $key => $value) {
    $headers .= "$key: $value\r\n";
}

foreach($addresses as $address)
{
  // $headers .= "To: $address\r\n";
  if(!mail($address, $subject, $message, $headers))
      return FALSE;
}