Я использую PHPMailer 5.2 Но каждый раз, когда я пытался отправить почту, она идет дважды. Таким образом, получатель получает одну почту дважды. Я ничего не менял по основному классу. Пожалуйста помогите.PHPMailer - Получайте 2 письма каждый раз, когда я запускаю код
class Mail{
static function send($data){
$mail = new PHPMailer;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = MAIL_HOST; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = MAIL_USERNAME; // SMTP username
$mail->Password = MAIL_PASSWORD; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = MAIL_PORT; // TCP port to connect to
$mail->SingleTo = true;
$mail->setFrom(MAIL_FROM_ID, MAIL_FROM_NAME);
$mail->addAddress($data['email'], $data['name']); // Add a recipient
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $data['subject'];
$mail->Body = $data['body'];
if(!$mail->send()) {
return false;
} else {
return true;
}
}
}
Я использую этот код для отправки почты =>
class Index extends Controller{
public function index(){
$data['email'] = '[email protected]';
$data['name'] = 'Kunal Khan';
$data['subject'] = 'Hello Mr. Kunal Khan';
$data['body'] = '<h1>Welcome in frsh Bazar</h1>';
Mail::send($data);
}
}
Скорее всего, ваш код запускается несколько раз, его часто вызывают браузерные плагины. Попробуйте добавить '$ mail-> Subject = $ data ['subject']. Rand();'; если вы получаете разные цифры в каждом сообщении, ваш код запускается дважды. – Synchro
Вы перенаправляете пользователя в другое место после отправки электронной почты? Потому что, если вы этого не сделаете, перезагрузка страницы может вызвать другое электронное письмо. Раньше у меня была аналогичная проблема, но это был устаревший PHP-код (без фреймворка), который мне пришлось развить, и насколько я помню, проблема заключалась в том, что $ mail-> send() был вызван дважды. Вы должны использовать дополнение rand(), рекомендованное в первом комментарии. – Moha
О, также: вы используете форму ajax для вызова этой отправки по электронной почте? Потому что, если да, некоторые браузеры могут отправлять данные формы как через ajax, так и обычно, поэтому ваш контроллер будет работать дважды. – Moha