Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPMailer发送双重电子邮件_Php_Mysql_Email_Phpmailer - Fatal编程技术网

PHPMailer发送双重电子邮件

PHPMailer发送双重电子邮件,php,mysql,email,phpmailer,Php,Mysql,Email,Phpmailer,我正在开发一个应用程序,它可以从数据库中获取客户的电子邮件,将它们存储在一个数组中,在数组中循环,然后分别向每个客户发送电子邮件 当PHPMailer向客户端发送一封双重电子邮件时,出现了问题。在其中一封电子邮件中,收件人字段包含最近的地址,在第二封电子邮件中,还有第二封客户端电子邮件 我认为这是一个脆弱性。 这是我的密码: $array=[0=>'email@gmail.com' , 1 => 'email2@gmail.com' ]; //范例 foreach ($array as $key

我正在开发一个应用程序,它可以从数据库中获取客户的电子邮件,将它们存储在一个数组中,在数组中循环,然后分别向每个客户发送电子邮件

当PHPMailer向客户端发送一封双重电子邮件时,出现了问题。在其中一封电子邮件中,收件人字段包含最近的地址,在第二封电子邮件中,还有第二封客户端电子邮件

<>我认为这是一个脆弱性。

这是我的密码: $array=[0=>'email@gmail.com' , 1 => 'email2@gmail.com' ]; //范例

foreach ($array as $key => $value) {
    $mail->addAddress($value);
    if (!$mail->send())
    {
        throw new Exception($mail->ErrorInfo);

    } else
    {
        $mail->addAddress(NULL); //Attempt to unset 
        header('Location: ../public/email.php'); //Redirect to start page

    }

}
所以总结一下:当运行此功能时,它会将电子邮件发送到'email@gmail.com“还有”email2@gmail.com"

第一封电子邮件将获得一份电子邮件副本。 第二封电子邮件将获得同一封电子邮件的两份副本,第一份显示为收件人,第二份显示为收件人+其他客户的电子邮件

我只使用了2个获取的客户机进行了测试,我想还会有更多的重复。
谢谢你们

这里有两个问题:

您没有从邮件中删除地址,因此当您添加第二个地址时,第一个地址仍然存在,并且两个地址都将看到另一个地址。 您正在循环中使用头重定向,而不终止脚本。这可能会导致重定向后的代码运行,但无法保证运行多少和多长时间。 第一个问题可以通过在循环结束时清除收件人来解决:

$mail->ClearAllRecipients();

至于第二个问题,您不应该重定向循环中的任何地方,当您在所有消息发送后重定向时,您应该使用exit退出scipt;这样之后就不会执行任何操作。

这里有两个问题:

您没有从邮件中删除地址,因此当您添加第二个地址时,第一个地址仍然存在,并且两个地址都将看到另一个地址。 您正在循环中使用头重定向,而不终止脚本。这可能会导致重定向后的代码运行,但无法保证运行多少和多长时间。 第一个问题可以通过在循环结束时清除收件人来解决:

$mail->ClearAllRecipients();

至于第二个问题,您不应该重定向循环中的任何地方,当您在所有消息发送后重定向时,您应该使用exit退出scipt;这样之后就不会执行任何操作了。

我认为您使用的是$value。尝试使用未设置的$value;看看是否有帮助。你也可以看看

警告 即使在foreach循环之后,$值和最后一个数组元素的引用仍然保留。建议通过取消设置将其销毁。否则,您将经历以下行为:


我想你用的是$value。尝试使用未设置的$value;看看是否有帮助。你也可以看看

警告 即使在foreach循环之后,$值和最后一个数组元素的引用仍然保留。建议通过取消设置将其销毁。否则,您将经历以下行为:


你是对的。头球犯了愚蠢的错误。谢谢你,伙计,这很有效。不知道是否有ClearAllRecipients,不过:-再次感谢!你是对的。头球犯了愚蠢的错误。谢谢你,伙计,这很有效。不知道是否有ClearAllRecipients,不过:-再次感谢!我建议你看看。