ILoveYAnny
@ILoveYAnny

Почему письмо в цикле отправляетcя по 2 раза одному адресату (залипает итерация цикла)?

Здравствуйте. Ничего не могу понять, почему то некоторые итерации выполняются по два раза, по два раза пишутся в БД и по 2 раза отправляются письма. Так же хотелось бы через каждые 30 писем разрывать соединение, для этого я использовал $mail->SmtpClose(); в PHPMailer, но тогда вообще творится что-то странное, записи в БД появляются не по порядку(!), то есть не 1 2 3, а 1 3 2. Кто-нибудь может проявить причину такого поведения? И как сделать всё-таки, что бы письма отправлялись по 1 разу, между каждой отправкой была пауза в секунду, а после 30 писем разрывалось соединение и была пауза в 10 секунд и всё по новой..
Экспериментировал много раз, но дельного результата не добился ...

<?php
$identNumber = 0;

// Generate UUID v4 function - needed to generate a CID when one isn't available
function gaGenUUID() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            // 32 bits for "time_low"
            mt_rand(0, 0xffff), mt_rand(0, 0xffff),
            // 16 bits for "time_mid"
            mt_rand(0, 0xffff),
            // 16 bits for "time_hi_and_version",
            // four most significant bits holds version number 4
            mt_rand(0, 0x0fff) | 0x4000,
            // 16 bits, 8 bits for "clk_seq_hi_res",
            // 8 bits for "clk_seq_low",
            // two most significant bits holds zero and one for variant DCE1.1
            mt_rand(0, 0x3fff) | 0x8000,
            // 48 bits for "node"
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}

foreach ($mails as $sendMail) {
			
    $gcid = gaGenUUID();
    $mailadressant = $sendMail;
	$message = $mailtemplate;
	$mail->ClearAllRecipients();
	$mail->ClearCustomHeaders();
	$mail->setFrom('mail@mail.ru', 'From mail');
	$mail->addReplyTo('mail@mail.ru', 'From mail');
    $mail->Subject = "Тема письма";
    $mail->CharSet = 'UTF-8';
	$mail->isHTML(true);
	$mail->Body = $message;
	$mail->AltBody = $message;
	$mail->addAddress($mailadressant);     // Add a recipient
	$mail->addCustomHeader('List-Unsubscribe', 'http://mail.ru/uns.php');

		if (!$mail->send()) {
			$maillogstatus = 'Mailer Error: ' . $mail->ErrorInfo;
		} else {
			$maillogstatus = "ok";
		}
		sleep(1);
		
		$sendQuery = ('INSERT INTO mail_log ( log, maillogstatus ) VALUES( ?, ? )');
		$params = array( $mailadressant, $maillogstatus);
		insertDB($sendQuery, $params);
		
		if ($identNumber % 30 == 0) {
			//$mail->SmtpClose();
			sleep(10);
		}

			
        $identNumber = $identNumber + 1;

}
echo "done";
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы