我有一个包含以下字段的数据库
此数据存储在多维关联数组中,如下所示:
$array[0][title] = Title-1
$array[0][summary] = Summary-1
$array[1][title] = Title-2
$array[1][summary] = Summary-2
我还有一个脚本可以遍历这些并根据需要进行渲染。
但是我发现很难将这些输出信息发送到邮件正文中。
环顾四周让我得到以下
我通过谷歌找到了更多的解决方案,但它们或多或少与上面的类似。
这些内容没有帮助,因为内容是静态的,部分是动态的。就我而言,整个身体都是动态的
这就是我现在所拥有的
function get_mailer_contents($email_category) {
global $mailer_contents;
$fetch_mailer_contents = mysql_query("SELECT * from `selected_posts` WHERE industry='$email_category'");
$id = "0";
while($temp_mailer_contents = mysql_fetch_array($fetch_mailer_contents))
{
$mailer_contents[$id]['title'] = $temp_mailer_contents['title'];
$mailer_contents[$id]['description'] = $temp_mailer_contents['description'];
$id ++;
}
}
get_mailer_contents($email_category);
foreach($mailer_contents as $title_cat)
{
echo "==================";
echo "<br>";
echo $title_cat['title'];
echo "<br>";
echo $title_cat['description'];
echo "<br>";
}
此处呈现的输出不是最终输出。我只是出于测试目的使用它。
我的问题是,foreach函数(或任何类似的循环数组)不能成为$ message(邮件正文)邮件的一部分,我需要有一个机制,因为数据是动态的
希望我已经足够清楚了。如果您需要更多细节,请告诉我
答案 0 :(得分:1)
您只需将输出分配给变量,然后在PhpMailer中使用它,如下面的代码所示:
$html = '<html><head><meta charset="utf-8" /></head><body>';
foreach ($array as $item) {
$html.= '<p>'.$item['title'].' '.$item['summary']."</p>";
}
$html.= '</body></html>';
// ... setting up phpMailer
$phpMailer->Body = $html;
$phpMailer->AltBody = nl2br(strip_tags($html));
$phpMailer->IsHTML(true); // you need to set HTML format
您还需要使用IsHTML
方法告诉phpMailer将内容作为HTML发送,您还应该设置AltBody
以便为不想要/无法在HTML中显示的人显示您的邮件格式。上面我使用了一种非常简单的方法将html转换为文本。但是,您可以根据需要添加任何其他文本。