来自数据库的 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 邮件发送测试消息时出现错误消息

PEAR Mail、Mail_Mime 和 headers() 覆盖

如何安装软件包 mail 和 mail_mime (pear)

带有附件问题的 PHP Pear Mime 邮件

拒绝应用来自 'xxx/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型