在phpmailer中发送动态表

时间:2014-06-26 17:24:53

标签: php phpmailer

我遇到通过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>"; }

2 个答案:

答案 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>';