php mailer отправляет 2 копии

Я отправляю отчет, вызывая эту страницу PHP ежедневно в моем браузере. Он (слишком часто) отправляет электронные письма дважды (даже если я каждый раз открываю новую вкладку).

Что не так с кодом + Как я могу предотвратить это?

Вот код:

<?php
require ("/home/phpmailer/PHPMailer-master/PHPMailerAutoload.php");
$mail = new PHPMailer;

$mail->isSMTP();                      // Set mailer to use SMTP
$mail->Host = 'localhost';           // Specify main and backup SMTP servers
$mail->SMTPAuth = true;             // Enable SMTP authentication
$mail->Username = '[email protected]';   //  SMTP username
$mail->Password = 'PASSWORD';              // SMTP password
$mail->SMTPSecure = 'tls';     // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;  // TCP port to connect to

$mail->From = '[email protected]';
$mail->FromName = 'FROM NAME';

$mail->ClearAddresses();
$mail->addAddress('[email protected]', 'CLARA');     // Add a recipient
$mail->addCC('email@@ABC.com', 'TOM');          // Add a CC recipient
$mail->addReplyTo('[email protected]', 'Info');
$mail->isHTML(true);                         // Set email format to HTML

$mail->Subject = 'EMAIL SUBJECT TITLE';
$mail->Body    = file_get_contents('http://ADDRESS-OF-THE-FILE.PHP');

if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
$mail->ClearAddresses();
}

?>

1

Решение

Я собираюсь догадаться, что вы используете Google Chrome, и функция «Предварительная загрузка ресурсов для более быстрой загрузки страниц» включена. По сути, Chrome извлекает URL-адрес до того, как вы закончите печатать, поэтому, когда вы закончите печатать и нажмете клавишу ввода, вы снова запросите его.

Отключите предварительную выборку или сохраните URL-адрес в закладке и щелкните закладку, когда необходимо запустить задачу.

введите описание изображения здесь

0

Другие решения

Сделайте так, как предложил SmartyCoder в комментариях.

Если вы уверены, что вы единственный, кто попадает в него, вы можете попробовать что-то быстрое и грязное с отслеживанием файлов cookie, например:

// See if a cookie is set, and if so, compare it to today
// If cookie value == today, die() - stop executing
if ( isset( $_COOKIE['email_reports_lastsent'] ) &&
$_COOKIE['email_reports_lastsent'] == date('Y-m-d') ) die();

// Set the cookie as today's date
setcookie( 'email_reports_lastsent', date('Y-m-d') );

Это НЕ решает проблему, если другие устройства / пользователи бьют по вашему сценарию. Это также требует, чтобы вы использовали один и тот же браузер для отправки, и вы не можете использовать Incognito или другую вкладку частного просмотра.

1

По вопросам рекламы [email protected]