У меня возникла проблема с отправкой электронной почты через почтовую программу php. Я пытаюсь отправить динамически заполненную таблицу, но я получаю только первую строку в письмах. Если у кого есть какие-либо знания о том, как я могу отправить полный стол в электронном письме, пожалуйста, поделитесь! Спасибо!
Вот мой код, где возникают проблемы.
$mail->isHTML(true); // Set email format to HTML $mail->Subject = $_POST['subject']; While($row=mysql_fetch_assoc($result)){ $end_dt = $row['end_dt']; $dpd = floor((abs(strtotime(date("Ymd")) - strtotime($end_dt))/(60*60*24))); $mail->Body = "<table><tr><th>Name</th><th>IDCourseTax</th><th>TDCourse</th><th>End Date</th><th>Tax Rate</th><th>Days past due</th></tr> <tr><td>".$row["course"]."</td><td>".$row["IDCourseTax"]."</td><td>".$row["IDCourse"]." </td><td>".$row["end_dt"]."</td><td>".$row["tax_rate"]."</td><td>".$dpd."</td></tr> </table>"; }
Вы пишете таблицу в цикле, поэтому на каждой итерации она перезаписывается.
Вам нужно создать таблицу в переменной, а затем установить тело этой переменной:
$mail->isHTML(true); // Set email format to HTML $mail->Subject = $_POST['subject']; $body = '<table><tr><th>Name</th><th>IDCourseTax</th><th>TDCourse</th><th>End Date</th><th>Tax Rate</th><th>Days past due</th></tr>'; while($row=mysql_fetch_assoc($result)) { $end_dt = $row['end_dt']; $dpd = floor((abs(strtotime(date("Ymd")) - strtotime($end_dt))/(60*60*24))); $body .= "<tr><td>".$row['course']."</td><td>".$row['IDCourseTax']."</td><td>".$row['IDCourse']." </td><td>".$row['end_dt']."</td><td>".$row['tax_rate']."</td><td>".$dpd."</td></tr>"; } $mail->Body = $body.'</table>';
Проблема в том, что вы не добавляете строки таблицы, но каждый раз переписываете следующую в теле письма, чтобы решить вашу проблему, вам просто нужно объединить в каждом случае одну строку.
$mail->isHTML(true);// Set email format to HTML $mail->Subject = $_POST['subject']; //starting table $mail->Body = "<table><tr><th>Name</th><th>IDCourseTax</th><th>TDCourse</th><th>End Date</th><th>Tax Rate</th><th>Days past due</th></tr>"; while($row=mysql_fetch_assoc($result)){ $end_dt = $row['end_dt']; $dpd = floor((abs(strtotime(date("Ymd")) - strtotime($end_dt))/(60*60*24))); $mail->Body .= " <tr> <td>".$row["course"]."</td><td>".$row["IDCourseTax"]."</td><td>".$row["IDCourse"]." </td><td>".$row["end_dt"]."</td><td>".$row["tax_rate"]."</td><td>".$dpd."</td> </tr> "; } $mail->Body .= "</table>"; //close table
в$mail->isHTML(true);// Set email format to HTML $mail->Subject = $_POST['subject']; //starting table $mail->Body = "<table><tr><th>Name</th><th>IDCourseTax</th><th>TDCourse</th><th>End Date</th><th>Tax Rate</th><th>Days past due</th></tr>"; while($row=mysql_fetch_assoc($result)){ $end_dt = $row['end_dt']; $dpd = floor((abs(strtotime(date("Ymd")) - strtotime($end_dt))/(60*60*24))); $mail->Body .= " <tr> <td>".$row["course"]."</td><td>".$row["IDCourseTax"]."</td><td>".$row["IDCourse"]." </td><td>".$row["end_dt"]."</td><td>".$row["tax_rate"]."</td><td>".$dpd."</td> </tr> "; } $mail->Body .= "</table>"; //close table