PHPmailer - многократная отправка электронной почты
Я отправляю электронные письма, используя PHPmailer. На данный момент я успешно отправляю электронную почту на один адрес. Теперь я хочу отправить несколько писем одним щелчком мыши.
ПРОБЛЕМАЯ пытался использовать несколько циклов ниже, чтобы отправить несколько электронных писем, но я получаю неправильный ответ. Да, он отправляет электронную почту, но только на один адрес, и на адрес электронной почты поступают все электронные письма, которые должны быть отправлены на другие электронные письма.
Например, когда я отправляю 17 писем, эти 17 писем отправляются только на один адрес.Письма должны быть отправлены в соответствии с адресами в базе данных, с соответствующими уникальными приложениями. Пример: [email protected] должен иметь прикрепленный файл abc.pdf, а [email protected] должен иметь вложенный 123.pdf.
Я думаю, что это в цикле. Пожалуйста, помогите мне разобраться. Благодарю.
require_once('phpmailer/class.phpmailer.php');
include("phpmailer/class.smtp.php");
$mail = new PHPMailer();
$body = file_get_contents('phpmailer/body.html');
$body = preg_replace('/\/b]/','',$body);
$file ='phpmailer/mailpass.txt';
if($handle = fopen($file,"r")){
$contentpass = fread($handle,'15');
fclose($handle);
}
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "[email protected]";
$mail->Password = $contentpass;
$mail->SetFrom("[email protected]", "Subject");
$mail->AddReplyTo("[email protected]","Subject");
$mail->Subject = "Subjects";
$mail->AltBody = "Subject";
$mail->MsgHTML($body);
$file='current_schoolyear.txt';
if($handle = fopen($file,"r"))
{
$content = fread($handle,'9');
fclose($handle);
}
$input = addslashes($_POST['depchair']);
$email = "select email_address from sa_student where schoolyear = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_assoc($p_address))
{
$mail->AddAddress($row['email_address']);
$input = addslashes($_POST['depchair']);
$control = "select control_no from sa_student where schoolyear = '$input'";
if($ctrl=mysql_query($control)){
$ctrl_no = mysql_result($ctrl, 0);
$mail->AddAttachment("fpdf/pdf_reports/document/".$ctrl_no.".pdf");
}
else
{
echo "No attached document.";
}
if(!$mail->Send()) {
$message = "<div class=\"nNote nFailure\" >
<p>Error sending email. " . $mail->ErrorInfo ."</p>
</div>";
} else {
$message = "<div class=\"nNote nSuccess\" >
<p> Email have been sent to the examinees in ".$input_depchair. "! </p>
</div>";
}
}
}
else
{
echo (mysql_error ());
}
ОБНОВЛЕННЫЙ КОД: После запуска приведенного ниже кода я смог отправить электронное письмо с правильным вложением. Однако было отправлено только ОДНОМ электронное письмо (последний адрес электронной почты в базе данных), а остальные письма не были отправлены.
$input = addslashes($_POST['depchair']);
$email = "select email_address, control_no from sa_student where schoolyear = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_assoc($p_address))
{
$cloned = clone $mail;
$cloned->AddAddress($row['email_address']);
$cloned->AddAttachment("fpdf/pdf_reports/document/".$row['control_no'].".pdf");
if(!$cloned->Send()) {
$message = "<div class=\"nNote nFailure\" >
<p>Error sending email. " . $mail->ErrorInfo ."</p>
</div>";
} else {
$message = "<div class=\"nNote nSuccess\" >
<p> Email have been sent to the examinees in ".$input_depchair. "! </p>
</div>";
}
unset( $cloned );
}
}
else
{
echo (mysql_error ());
}