我遇到通过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("Y-m-d")) - 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>"; }
答案 0 :(得分:0)
问题是你没有附加表格行,但是每次重写电子邮件正文中的下一行,为了解决你的问题,你只需要在每一次交互中连接单行。
$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("Y-m-d")) - 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
答案 1 :(得分:0)
您正在循环中编写表,因此在每次迭代时都会被覆盖。
您需要在变量中创建表,然后将主体设置为该变量:
$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("Y-m-d")) - 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>';