У меня проблема с PHPMailer, я отправил электронные письма на 6 адресов электронной почты, 2 из них получили сообщение дважды.
Хостинг - Godaddy, и я использую последнюю версию PHPMailer.
Вот код:
//Including PHPMailer files
require_once('phpmailer/src/phpmailer.php');
require_once('phpmailer/src/SMTP.php');
require_once('phpmailer/src/Exception.php');
$msg = '';
//List of email adressess
$recipients = array('help@example.com', 'user@example.com', 'desk@example.com', 'admin@example.com', 'contact@example.com', 'schedule@example.com');
//Initializing PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer(); // Passing `true` enables exceptions
try {
//Server settings
$mail->isSMTP();
$mail->Host = 'relay-hosting.secureserver.net';
$mail->Port = 25;
$mail->SMTPAuth = false;
$mail->SMTPSecure = false;
//Sender data
$mail->setFrom('info@example.com', 'Info');
$mail->addReplyTo('info@example.com', 'Info');
//Content
$mail->isHTML(true);
$mail->Subject = 'Hello World!';
$mail->Body = 'Hello World!';
$mail->AltBody = 'Hello World!';
//Loop throught the email addresses
foreach ($recipients as $recipient) {
$mail->addAddress($recipient);
//Attachments
$mail->AddStringAttachment($pdfString, $filename);
//Check if the message was sent
if (!$mail->send()) {
echo "Mailer Error (" . str_replace("@", "@", $recipient) . ') ' . $mail->ErrorInfo . '<br />';
break; //Abandon sending
} else {
echo "Message sent to :" . ' (' . str_replace("@", "@", $recipient) . ')<br />';
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
$mail->clearAttachments();
}
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
Оба 'user@example.com' и 'contact@example.com', 2-й и 5-й получили сообщение дважды.
Сценарий был выполнен один раз, и я использую $mail->clearAddresses();
, чтобы очистить адреса электронной почты до следующего цикла.
В чем проблема и как ее решить?