В настоящее время у меня есть эта проблема на сервере сетки MediaTemple.
Я использую PHP Mailer и у меня есть следующий код:
require_once("inc/class.phpmailer.php");
// Mail from contact form for me
$mail = new PHPMailer();
$mail -> IsSMTP();
$mail -> CharSet = "UTF-8";
$mail -> SetFrom($_POST["email"],$_POST["name"]);
$mail -> AddReplyTo($_POST["email"],$_POST["name"]);
$mail -> AddBCC("[email protected]");
$mail -> Subject = "Mail Subject";
$body = "... some html ...";
$mail -> MsgHTML($body);
// Automatic mail for the person that contacted me
$mail_customer = new PHPMailer();
$mail_customer -> IsSMTP();
$mail_customer -> CharSet = "UTF-8";
$mail_customer -> SetFrom("[email protected]","Contact");
$mail_customer -> AddReplyTo("[email protected]","Contact");
$mail_customer -> AddAddress($_POST["email"],$_POST["name"]);
$mail_customer -> Subject = "Thank you for contacting us!";
$body_customer = "... some html ...";
$mail_customer -> MsgHTML($body_customer);
$mail -> Send();
$mail_customer -> Send();
Когда все закончится, ошибок нет, но по какой-то причине я получаю три электронных письма.
Что может быть причиной этого и как я могу это исправить? Это связано с PHP Mailer или с конфигурацией сервера?
Попробуйте обернуть ваше первое письмо в метод и использовать конструкцию if else для запуска другого
Посмотрите на мой пример кода ниже, чтобы понять, что я предлагаю.
Попробуйте написать свой код таким образом.
Обратите внимание: Я еще не проверял это.
require_once('../class.phpmailer.php');//MAIL SENDER 1
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("[email protected]","First Last");
$mail->SetFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//RUN THE OTHER METHOD EMAIL
mail_customer();
}
//MAIL SENDER 2 WITHIN A METHOD
function mail_customer(){
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("[email protected]","First Last");
$mail->SetFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//RUN THE OTHER METHOD EMAIL
echo 'Mail Sent';
}
}
Других решений пока нет …