PHP html电子邮件,使用html模板

时间:2009-11-15 23:00:14

标签: php html templates email

所以我正在尝试做一个html邮件系统和我的html我想成为一个模板,存储在一个单独的文件中:

<div clas="headr"></div>
    <div class="content"></div>
<div class="footer"></div>

当我想发送邮件时,我希望我的邮件内容(来自输入表单)进入div.content,然后发送整个html(模板+提交的文本)。 最好的方法是什么?我想的是:

  1. 将模板导入我发送邮件的php
  2. 找到带有“内容”类的div并将提交的文本添加到其中
  3. 发送邮件
  4. 但我不知道如何“找到”div并将提交的文本写入其中。

5 个答案:

答案 0 :(得分:17)

正如Pekka所说,你可以简单地使用str_replace在模板中插入数据。只需添加一个占位符:

<div clas="header"></div>
<div class="content">{{content}}</div>
<div class="footer"></div>

然后将占位符替换为您的内容:

$content = 'Whatever you want to insert...';
$tpl = file_get_contents('yourtemplate.html');
$tpl = str_replace('{{content}}', $content, $tpl);
mail($tpl, ...);

答案 1 :(得分:17)

您可以将PHP脚本放在模板中,然后让PHP自己进行渲染,例如:

template.html:

<div clas="headr"></div>
    <div class="content"><?php echo $body; ?></div>
<div class="footer"></div>

然后在PHP代码中加载它:

$body = "Put this into the content tag...";
ob_start();
include("template.html");
$email = ob_get_clean();

编辑:在这种情况下,使用我的方法而不是简单替换可能有点过分,但是如果不是替换整个电子邮件消息,而是希望拥有更复杂的模板,那么很容易E.g:

<table>
 <tr>
  <td>Name:</td>
  <td><?php echo $name; ?></td>
 </tr>
 <tr>
  <td>Email:</td>
  <td><?php echo $email; ?></td>
 </tr>
</table>

它非常灵活,可以防止必须替换太多变量,更重要的是将html保留在代码之外。

答案 2 :(得分:2)

使用str_replace()将内容插入模板。

使用PHPMailer之类的类轻松发送HTML电子邮件。

答案 3 :(得分:1)

请找出the wide answer at Programmers.StackExchange,其中包含有关PHP电子邮件模板的方法

简单的PHP解决方案可以是:

答案 4 :(得分:0)

如果您想避免在模板中使用占位符或PHP代码,可以查看phpQuery,它是jQuery的PHP端口。

在您的示例中,您会遇到与此类似的内容(请参阅docs):

<?php
$body = 'The body of your email message';

$template = file_get_contents('template.html');
$email = pq('div.content').html($body);
?>

可能看起来有点矫枉过正,但如果你打算添加更多相同的基于CSS选择器的功能,og只是想让你的设计师肮脏的手离开PHP它可能是一个很好的解决方案。