我正在尝试使用Sendgrid发送一封电子邮件,其中显示了数据库中的信息。
我的代码:
$email->addContent(
"text/html", "
<?php foreach ($dueinsevendays as $dueinsevenday) :
$sevendaycomref = $dueinsevenday['ceref'];
$sevendaytitle = $dueinsevenday['cetitle'];
$sevendaydate = $dueinsevenday['targetresponse'];
$sevendaystage = $dueinsevenday['cestage'];
?>
<tr>
<td style='border: 1px solid black;'>$sevendaycomref</td>
<td style='border: 1px solid black;'>$sevendaytitle</td>
<td style='border: 1px solid black;'>$sevendaydate</td>
<td style='border: 1px solid black;'>$sevendaystage</td>
</tr>
<?php endforeach; ?>
")
我在将查询结果分配给变量时遇到错误,例如它说“ $ dueinsevenday ['ceref'];”,第一个[显示为错误(语法错误,意外的带引号的字符串和空白)。 / p>
我需要为查询返回的数据库中的每条记录创建一个表行,如果我在此php代码之外分配变量,则没有错误,但循环不起作用,此代码将仅显示一个表格行而不是全部,例如:
$sevendaycomref = $dueinsevenday['ceref'];
$sevendaytitle = $dueinsevenday['cetitle'];
$sevendaydate = $dueinsevenday['targetresponse'];
$sevendaystage = $dueinsevenday['cestage'];
$email->addContent(
"text/html", "
<?php foreach ($dueinsevendays as $dueinsevenday) :
?>
<tr>
<td style='border: 1px solid black;'>$sevendaycomref</td>
<td style='border: 1px solid black;'>$sevendaytitle</td>
<td style='border: 1px solid black;'>$sevendaydate</td>
<td style='border: 1px solid black;'>$sevendaystage</td>
</tr>
<?php endforeach; ?>
")
任何有关解决错误或重新排列代码的想法都将受到赞赏。
答案 0 :(得分:2)
您似乎正在将PHP代码放置在字符串变量中,并希望将其作为代码执行。不会,它将被视为电子邮件的预期内容。您需要首先处理数据,将必要的HTML添加到字符串变量中,然后将该字符串(即代码的结果而不是代码本身)添加到电子邮件中。
像这样尝试:
$html = "";
foreach ($dueinsevendays as $dueinsevenday)
{
$html .= "<tr>
<td style='border: 1px solid black;'>$sevendaycomref</td>
<td style='border: 1px solid black;'>$dueinsevenday['cetitle']</td>
<td style='border: 1px solid black;'>$dueinsevenday['targetresponse']</td>
<td style='border: 1px solid black;'>$dueinsevenday['cestage']</td>
</tr>";
}
$email->addContent("text/html", $html);