我一直试图阻止发送额外的电子邮件。立即更新到当前作曲家版本6.x.x以查看它是否有帮助。
在阅读本网站和其他地方的其他帖子后,我补充道 $ MAIL-> ClearAllRecepients(); 到phpmailer代码。但我要么把它放在错误的位置,要么就是没有解决发送的额外电子邮件。
您可以从调试信息中看到,每个电子邮件的发送时间略有不同,相隔不到1秒。
我需要一些关于如何解释此调试信息的指导,以找出解决问题的另一种方法。
这是我的代码,它基于packagist提供的示例。
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
$mail->ClearAllRecipients();
$mail->isSMTP();
$mail->Host = 'outlook.office365.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'no-reply@website.com'; // SMTP username
$mail->Password = $EMailPW; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port : tls 587 or ssl 465
$mail->setFrom('no-reply@website.com', 'DO NOT REPLY');
$mail->AddAddress("h@the.com");
$mail->addBCC("t@the.com");
$mail->addBCC("me@com.com");
//$mail->ClearAllRecipients();
$emailinfo = new Emaillist();
$emailinfo->load($link,$v[number]);
if($v[type] == 25){
$mail->isHTML(false); // Set email format to HTML
$service_notice = "info\n";
}else{
$mail->isHTML(true); // Set email format to HTML
$service_notice = "<p>info";
}
$myEmails = $emailinfo->getEmails();
if(is_array($myEmails)){
foreach($myEmails as $myEmail){
$mail->AddAddress($myEmail);
}
}else{
$mail->AddAddress($myEmails);
}
$mail->SMTPDebug = 1;
$debug = '';
$mail->Debugoutput = function($str, $level) {
$GLOBALS['debug'] .= "$level: $str\n";
};
$mail->Subject = "email subject";
$mail->Body = $service_notice;
$mail->send();
$message .= '<h4>Confirmation Email sent.</h4>';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
$mail->ClearAllRecipients();
$mailfile = 'phpmailer_log1.csv';
file_put_contents($mailfile, $debug, FILE_APPEND | LOCK_EX);
当只发送1封电子邮件时,仍会看到1-4封电子邮件。
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: STARTTLS
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: AUTH LOGIN
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: MAIL FROM:<no-reply@website.com>
1: CLIENT -> SERVER: RCPT TO:<email1@email.com>
1: CLIENT -> SERVER: RCPT TO:<email2@email>
1: CLIENT -> SERVER: RCPT TO:<email3@email>
1: CLIENT -> SERVER: RCPT TO:<email4@email>
1: CLIENT -> SERVER: RCPT TO:<my@email>
1: CLIENT -> SERVER: DATA
1: CLIENT -> SERVER: Date: Wed, 31 Jan 2018 12:23:53 -0600
1: CLIENT -> SERVER: To: email1@email.com, email2@email, email3@email
1: CLIENT -> SERVER: From: Sams HSC - DO NOT REPLY <no-reply@website.com>
1: CLIENT -> SERVER: Subject: Email Subject
1: CLIENT -> SERVER: Message-ID: <zRteVwuqed9mzxSYv7kYzY6psx7Wvzy7zj2BOkIzq4@www.website.com>
1: CLIENT -> SERVER: X-Mailer: PHPMailer 6.0.3 (https://github.com/PHPMailer/PHPMailer)
1: CLIENT -> SERVER: MIME-Version: 1.0
1: CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: <p> line of info
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: .
1: CLIENT -> SERVER: QUIT
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: STARTTLS
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: AUTH LOGIN
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: MAIL FROM:<no-reply@website.com>
1: CLIENT -> SERVER: RCPT TO:<email1@email.com>
1: CLIENT -> SERVER: RCPT TO:<email2@email>
1: CLIENT -> SERVER: RCPT TO:<email3@email>
1: CLIENT -> SERVER: RCPT TO:<email4@email>
1: CLIENT -> SERVER: RCPT TO:<my@email>
1: CLIENT -> SERVER: DATA
1: CLIENT -> SERVER: Date: Wed, 31 Jan 2018 12:23:56 -0600
1: CLIENT -> SERVER: To: email1@email.com, email2@email, email3@email
1: CLIENT -> SERVER: From: Sams HSC - DO NOT REPLY <no-reply@website.com>
1: CLIENT -> SERVER: Subject: Email Subject
1: CLIENT -> SERVER: Message-ID: <J1x2LuBKaCh1QHj3MxUM2hjFbO3k70pyCuV5Mbs1I@www.website.com>
1: CLIENT -> SERVER: X-Mailer: PHPMailer 6.0.3 (https://github.com/PHPMailer/PHPMailer)
1: CLIENT -> SERVER: MIME-Version: 1.0
1: CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: <p> line of info
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: .
1: CLIENT -> SERVER: QUIT
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: STARTTLS
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: AUTH LOGIN
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: MAIL FROM:<no-reply@website.com>
1: CLIENT -> SERVER: RCPT TO:<email1@email.com>
1: CLIENT -> SERVER: RCPT TO:<email2@email>
1: CLIENT -> SERVER: RCPT TO:<email3@email>
1: CLIENT -> SERVER: RCPT TO:<email4@email>
1: CLIENT -> SERVER: RCPT TO:<my@email>
1: CLIENT -> SERVER: DATA
1: CLIENT -> SERVER: Date: Wed, 31 Jan 2018 12:24:01 -0600
1: CLIENT -> SERVER: To: email1@email.com, email2@email, email3@email
1: CLIENT -> SERVER: From: Sams HSC - DO NOT REPLY <no-reply@website.com>
1: CLIENT -> SERVER: Subject: Email Subject
1: CLIENT -> SERVER: Message-ID: <0pCMiMpKlyKVK0zLh2CjKn50oNpuyGlK9pzbDJQM8@www.website.com>
1: CLIENT -> SERVER: X-Mailer: PHPMailer 6.0.3 (https://github.com/PHPMailer/PHPMailer)
1: CLIENT -> SERVER: MIME-Version: 1.0
1: CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: <p> line of info
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: .
1: CLIENT -> SERVER: QUIT
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: STARTTLS
1: CLIENT -> SERVER: EHLO www.website.com
1: CLIENT -> SERVER: AUTH LOGIN
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: <credentials hidden>
1: CLIENT -> SERVER: MAIL FROM:<no-reply@website.com>
1: CLIENT -> SERVER: RCPT TO:<email1@email.com>
1: CLIENT -> SERVER: RCPT TO:<email2@email>
1: CLIENT -> SERVER: RCPT TO:<email3@email>
1: CLIENT -> SERVER: RCPT TO:<email4@email>
1: CLIENT -> SERVER: RCPT TO:<my@email>
1: CLIENT -> SERVER: DATA
1: CLIENT -> SERVER: Date: Wed, 31 Jan 2018 12:24:04 -0600
1: CLIENT -> SERVER: To: email1@email.com, email2@email, email3@email
1: CLIENT -> SERVER: From: Sams HSC - DO NOT REPLY <no-reply@website.com>
1: CLIENT -> SERVER: Subject: Email Subject
1: CLIENT -> SERVER: Message-ID: <93733OGtyxVygc7xXO6cDMoQwOuvzpZ7MFerWBLA@www.website.com>
1: CLIENT -> SERVER: X-Mailer: PHPMailer 6.0.3 (https://github.com/PHPMailer/PHPMailer)
1: CLIENT -> SERVER: MIME-Version: 1.0
1: CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: <p> line of info
1: CLIENT -> SERVER:
1: CLIENT -> SERVER: .
1: CLIENT -> SERVER: QUIT
答案 0 :(得分:0)
我能够通过在第一个发送事件之后记录唯一标识符并在每次发送之前检查日志来停止发送电子邮件的多个副本。函数调用只计算在日志表中找到唯一标识符的次数。
$emailsent = confirmExists($mysqli, 'EmailLog', 'UniqueID', $v[emailid]);
if($emailsent == 0){
//echo "Email has not been sent";
$mail->send();
$link->query("INSERT INTO `EmailLog` (`emailid`) VALUES ('$v[emailid]')");
}else{
//echo "Email has been sent";
}