PHP Mailer中的动态HTML

时间:2014-07-28 06:20:09

标签: php html mysql email phpmailer

我有一个包含以下字段的数据库

  1. ID
  2. 标题
  3. URL
  4. 摘要
  5. 此数据存储在多维关联数组中,如下所示:

    $array[0][title] = Title-1
    $array[0][summary] = Summary-1
    $array[1][title] = Title-2
    $array[1][summary] = Summary-2
    

    我还有一个脚本可以遍历这些并根据需要进行渲染。

    但是我发现很难将这些输出信息发送到邮件正文中。

    环顾四周让我得到以下

    1. Dynamic Content into mail() $message
    2. Dynamic HTML Table in PHP Mail
    3. HTML mail with dyanmic values
    4. How to send HTML Dynamic Table as mail in php?
    5. 我通过谷歌找到了更多的解决方案,但它们或多或少与上面的类似。

      这些内容没有帮助,因为内容是静态的,部分是动态的。就我而言,整个身体都是动态的

      这就是我现在所拥有的

      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(邮件正文)邮件的一部分,我需要有一个机制,因为数据是动态的

      希望我已经足够清楚了。如果您需要更多细节,请告诉我

1 个答案:

答案 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转换为文本。但是,您可以根据需要添加任何其他文本。