Когда он вводит цикл for, программа посылает ему единственную почту в первое положение arrelgo $lista, потом, когда цикл повторяется во второй раз, программа посылает сообщение два раза на почту в 2-ом положении договоренности. Когда входит из-за 3era раз в цикл, программа посылает 3 сообщения почте в ней 3era положение договоренности. Он спрашивает у меня, что он потому что? Здесь я оставляю им код
<?php
$asunto = $_POST["asunto"];
$mensaje = $_POST["mensaje"];
$lista = array("gerardo.topete@outlook.com","gerardotopete7@gmail.com","suscripcion.punkconleche@gmail.com");
$i = count($lista);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
for($x = 0; $x < $i; $x++){
try {
//Server settings
$mail->SMTPDebug = 0; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '********'; // SMTP username
$mail->Password = '********'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('suscripcion.punkconleche@gmail.com');
$mail->addAddress($lista[$x]); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $asunto;
$mail->Body = $mensaje;
$mail->send();
echo 'Tu correo se ha enviado';
} catch (Exception $e) {
echo 'Error al intentar suscribirte: ', $mail->ErrorInfo;
}
}
?>
Ошибка проистекает того, что каждый раз, когда он называется в mГ©todo addAddress()
присоединяется новый адресат ( To: ), но закончив каждый цикл, ты это не удаляешь.
А именно, закончив цикл n
, в списке адресатов tendrГЎs n
адресатов и в адресата в ней posiciГіn x
он habrГЎs посланник n - x
mails.
MГЎs grГЎficamente serГ - в:
// $x = 0
addAddress(mail1);
send(); // [mail1] destinatario
В prГіximo цикл:
// $x = 1
addAddress(mail2);
send(); // [mail1, mail2] destinatarios
, Поскольку возможно видеть, в mail1
он envГ - или 2
раз ( в первой и во втором раунде ).
И asГ - последовательно до тех пор, пока $x < $i
DeberГ-Схвати призывать clearAddresses()
удалять все адресаты, которые были атташе. Пример:
//... código anterior
$mail->send();
$mail->clearAddresses();
//...