Отсутствует текст сообщения во время зацикливания PHPMailer

Это мой код:

// $mail->addReplyTo('noreply@pbrx.co.id', 'No Reply');
$subjectTo = explode(';', $Addres);
//var_dump($Addres);
array($subjectTo);
// var_dump(array($subjectTo));
foreach ($subjectTo as $key => $value) {
// $mail->isSMTP();
$mail->Protocol = 'smtp';
$mail->Host = '192.168.40.220';
$mail->Port = 25;
$mail->SMTPDebug  = false;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->From = 'noreply1@pbrx.co.id';
$mail->FromName = 'Notes Email';
$mail->addAddress($value);

$subject = $supplier.' have sent NOTES FROM PO - '.$PO;
if(substr($PO,-1)=='L'){
$message = "Dear Purchasing,\nYou have NOTES from ".$supplier." with PO : ".$PO."\n Here the list :";
}else{
$message = "Dear Merchandiser,\nYou have NOTES from ".$supplier." with PO : ".$PO."\n Here the list :";
}

$nomor = 1;
//var_dump($tbl_note->fetch_assoc());
while ($val = $tbl_note->fetch_assoc()) {
$message .= "\n".$nomor.". ITEM :".$val['itemdesc']." ( ".$val["matcontents"]." ) COLOR/SIZE :".$val['colorcode']."/".$val['size']." notes : ".$val['PIReason'];
$nomor = $nomor + 1;
}

$mail->Subject = $subject;
$mail->Body = $message ;
}

Если я использую только 1 адрес, сообщение будет отображаться так:

Уважаемый покупатель,
У вас есть ЗАМЕЧАНИЯ от COATS REJO INDONESIA с PO: NORT170283-014950-L
Вот список:
1. ПУНКТ: EMB THREAD TEX 18 DRYVENT LOGO (KXON) ЦВЕТ / РАЗМЕР: АСФАЛЬТ СЕРЫЙ / SYLCO TEX 18 примечания

Но если я использую несколько таких писем: usera@email.com;userb@email.com Я получил:

Уважаемый покупатель,
У вас есть ЗАМЕЧАНИЯ от COATS REJO INDONESIA с PO: NORT170283-014950-L
Вот список:

Там нет пункта там же po, Я сделал что-то не так при зацикливании сообщений?

Спасибо от Микмацкуса,
так что я попробую это,
я изменяю положение, зацикливая мой элемент списка перед foreach, и делаю varibale в зацикливании моего элемента списка. и наконец, я использую нью-й цикл переменных внутри foreach. И работает.
Вот код, который я изменил:

// $mail->addReplyTo('noreply@pbrx.co.id', 'No Reply');
$subjectTo = explode(';', $Addres);
//var_dump($Addres);
array($subjectTo);
// var_dump(array($subjectTo));
$nomor = 1;
//var_dump($tbl_note->fetch_assoc());
while ($val = $tbl_note->fetch_assoc()) {
$listitem .= "\n".$nomor.". ITEM :".$val['itemdesc']." ( ".$val["matcontents"]." ) COLOR/SIZE :".$val['colorcode']."/".$val['size']." notes : ".$val['PIReason'];
$nomor = $nomor + 1;
}
foreach ($subjectTo as $key => $value) {
// $mail->isSMTP();
$mail->Protocol = 'smtp';
$mail->Host = '192.168.40.220';
$mail->Port = 25;
$mail->SMTPDebug  = false;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->From = 'noreply1@pbrx.co.id';
$mail->FromName = 'Notes Email';
$mail->addAddress($value);

$subject = $supplier.' have sent NOTES FROM PO - '.$PO;
if(substr($PO,-1)=='L'){
$message = "Dear Purchasing,\nYou have NOTES from ".$supplier." with PO : ".$PO."\n Here the list :";
}else{
$message = "Dear Merchandiser,\nYou have NOTES from ".$supplier." with PO : ".$PO."\n Here the list :";
}
$message .= $listitem;

$mail->Subject = $subject;
$mail->Body = $message ;
}

1

Решение

использование mysqli_data_seek($tbl_note,0); перед вашим циклом while для сброса указателя, когда у вас более одной итерации.

Лучшей практикой было бы построить свой list часть сообщения из вашего набора результатов и установите этот текст в переменную вне ваших циклов (я не знаю, где ваш запрос — это не в вашем коде) и просто используйте эту переменную внутри вашего цикла для объединения сообщений.

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector