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

kmu*_*nky 4 html php email templates

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

<div clas="headr"></div>
    <div class="content"></div>
<div class="footer"></div>
Run Code Online (Sandbox Code Playgroud)

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

  1. 将模板导入我发送邮件的php
  2. 找到带有"content"类的div并将提交的文本添加到其中
  3. 发邮件

但我不知道如何"找到"div并将提交的文本写入其中.

bri*_*vis 17

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

<div clas="header"></div>
<div class="content">{{content}}</div>
<div class="footer"></div>
Run Code Online (Sandbox Code Playgroud)

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

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


Dan*_*een 17

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

template.html:

<div clas="headr"></div>
    <div class="content"><?php echo $body; ?></div>
<div class="footer"></div>
Run Code Online (Sandbox Code Playgroud)

然后在PHP代码中加载它:

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

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

<table>
 <tr>
  <td>Name:</td>
  <td><?php echo $name; ?></td>
 </tr>
 <tr>
  <td>Email:</td>
  <td><?php echo $email; ?></td>
 </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

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