我写了一个脚本来发送 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/