php - 将 HTML 文件读入电子邮件

标签 php html email

我写了一个脚本来发送 html 电子邮件并且一切正常。我将电子邮件存储在一个单独的 HTML 文件中,然后使用 while 循环和 fgets() 读取该文件。但是,我希望能够将变量传递到 html 中。例如,在一个 html 文件中我可能有类似的东西..

<body>
    Dear Name <br/>
    Thank you for your recent purhcase
</body>

我把它读成这样的字符串

$file = fopen($filename, "r");
while(!feof($file)) {
    $html.= fgets($file, 4096);
}
fclose ($file);

我希望能够用一个变量替换 html 文件中的“名称”,但我并不完全确定执行此操作的最佳方法。我总是可以制作自己的标签,然后在我将文件读入字符串后使用正则表达式将其替换为名称,但我想知道是否有更好/更简单的方法来执行此操作。

(附带说明,如果有人知道使用 file_get_contents 代替多次调用 fgets 是否更好,我很想知道)

最佳答案

str_replace() 也有可能匹配和替换您可能不想要的东西的缺点。 Smarty 对此绝对是矫枉过正,我会按照 Matt 上面的建议做类似下面的事情

function getEmailContents(array $vars) {
  extract($vars);

  ob_start();
  include 'email.html.php';
  return ob_get_clean();
}

email.html.php 看起来像这样

<body>
    Dear <?php echo $name; ?> <br/>
    Thank you for your recent purhcase of <?php echo $product; ?>
</body>

你可以这样调用它

$emailContents = getEmailContents(array('name' => 'El Yobo', 'product' => 'Something'));

通过这种方式,您永远不会错误地匹配任何内容,并且可以轻松地使用其他变量等进行扩展,而无需使用额外的 str_replace() 调用。

如果您需要更进一步,那么 Smarty 可能值得一看。

关于php - 将 HTML 文件读入电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2584788/

相关文章:

javascript - 根据用户的 IE 版本有条件 X-UA 兼容内容

html - 如何在不支持 Flexbox 的情况下使用 x*y 网格拆分视口(viewport)(整个宽度和高度)

java - 使用线程发送邮件但仍然挂起 Java 中的应用程序

php - 如何限制从 PHP 发送的出站 SMTP 邮件

php - 设置 SQL 中 id 为 ='$id' 的所有行

javascript - 如何让用户返回到使用当前代码的特定 div

javascript - 每次更改数据库下拉值时,文本框填充空值

php - 是否存在允许设备无需下载或流式传输即可访问和使用数据的技术?

java - 将 PDF 附加到来自 Android 应用程序的电子邮件 - 文件大小为零

javascript - 第一次加载页面时图像未显示在 Canvas 上