来自数据库的 PEAR MIME html 表只发送一行
Posted
技术标签:
【中文标题】来自数据库的 PEAR MIME html 表只发送一行【英文标题】:PEAR MIME html table from data base only sending one row 【发布时间】:2017-01-03 04:16:30 【问题描述】:我正在尝试在来自 mysql 表的电子邮件中填充 html 表。我遇到的问题是电子邮件中的表格只显示最后一个结果。我不确定如何在 html 电子邮件表中显示多个结果。
初始化电子邮件变量
$sql = "SELECT * FROM tblUnitMaster WHERE JobNumber = '" . $JobNumber . "'";
$result=$conn->query($sql);
while ($row=$result->fetch_array())
$UnitID = $row[0];
$JobCode = $row[5];
$RTU = $row[17];
$ModelNumber = $row[2];
$SerialNumber = $row[3];
$Scope = $row[4];
电子邮件字符串
require 'Mail.php';
require 'Mail/mime.php';
$to = '$FUSER';
$headers['From'] = 'forest@fisenusa.net';
$headers['Subject'] = $JobNumber . " Job Handoff";
// create MIME object
$mime = new Mail_mime;
// add body parts
$html = '<html><body><p>Job: ' . $JobNumber . ' has been handed off from sales. Priority set as ' . $PriorityCode . ' .</p>
<p>Please review and assign an <a href="http://fisenusa.net/pm/pmAssignEngineer2.php?JobNumber=' . $JobNumber. '"> Engineer </a> as soon as possible.</p>
<table border=2 cellpadding=4 cellspacing=10>
<tr>
<th><b><font color=STEELBLUE size=3>Unit Number</font></b></th>
<th><b><font color=STEELBLUE size=3>Job Code</font></b></th>
<th><b><font color=STEELBLUE size=3>RTU</font></b></th>
<th><b><font color=STEELBLUE size=3>Model Number</font></b></th>
<th><b><font color=STEELBLUE size=3>Scope</font></b></th>
</tr>
<tr>
<td><font color=DIMGRAY size=2>' . $UnitID . '</font></td>
<td><font color=DIMGRAY size=2>' . $JobCode . '</font></td>
<td><font color=DIMGRAY size=2>' . $RTU . '</font></td>
<td><font color=DIMGRAY size=2>' . $ModelNumber . '</font></td>
<td><font color=DIMGRAY size=2>' . $Scope . '</font></td>
</tr>
</table>
<p>Click link to vist master record of Job Number: <a href="http://fisenusa.net/pm/pmUnitMaster2.php?JobNumber=' . $JobNumber. '">' . $JobNumber . '</a></p>
<p>Thank You,</p>
<p>FOREST</p>
<p>' . $quote . '</p>
</body></html>';
$mime->setHTMLBody($html);
// get MIME formatted message headers and body
$headers = $mime->headers($headers);
$body = $mime->get();
$message =& Mail::factory('mail');
$message->send($to, $headers, $body);
【问题讨论】:
【参考方案1】:第一步。您应该将数据聚合到数组中。例如
$data = array();
while ($row=$result->fetch_array())
$data[] = array(
'UnitID' => $row[0],
'JobCode' => $row[5],
'RTU' => $row[17],
'ModelNumber' => $row[2],
'SerialNumber' => $row[3],
'Scope' => $row[4],
);
第二步你在循环中连接字符串,例如:
foreach ($data as $row)
$html .=
'<tr>
<td><font color=DIMGRAY size=2>' . $row['UnitID'] . '</font></td>
<td><font color=DIMGRAY size=2>' . $row['JobCode'] . '</font></td>
<td><font color=DIMGRAY size=2>' . $row['RTU'] . '</font></td>
<td><font color=DIMGRAY size=2>' . $row['ModelNumber'] . '</font></td>
<td><font color=DIMGRAY size=2>' . $row['Scope'] . '</font></td>
</tr>';
【讨论】:
尝试您的建议后。我知道获取 php 注意:未定义的索引:对于所有这些。在我至少得到表格的最后一行之前。 我走了另一条路。不过还是谢谢。以上是关于来自数据库的 PEAR MIME html 表只发送一行的主要内容,如果未能解决你的问题,请参考以下文章
使用 PEAR 的 Mail_Mime 时,附加 HTML 图像时文本部分不起作用
PEAR Mail、Mail_Mime 和 headers() 覆盖
如何安装软件包 mail 和 mail_mime (pear)
拒绝应用来自 'xxx/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型