我有一个PHP脚本内的电子邮件模板。我正在使用PHPmailer,发送的消息存储在名为$msg
的变量中。
如何将$msg
设置为电子邮件模板包含文件?我希望有一种方法可以使用包含文件动态执行此操作,这样我就不必在不同的脚本中存储20个模板副本。
答案 0 :(得分:3)
不确定我是否正确理解你,但为什么你不能这样做呢?
include_once('filename.php');
答案 1 :(得分:3)
您有多种方法,我将在下面提及其中的三种方法。
首先,如果您包含类似以下示例的文件:
include('myfile.php');
它的代码将被执行,就像它被粘贴而不是上面提到的行一样。因此,如果您要在myfile.php
中添加值声明,则该变量将在include()
函数调用之后可用(如上所述)。
所以,基本上,你可以在myfile.php
文件中执行类似的操作:
<?php
$msg = 'my template';
并在$msg
调用主文件后的任何地方使用include()
变量(除非变量已被覆盖)。
return
在某些情况下使用,例如。当您只包含包含您要使用的某些值的文件时(文件的主要目的是提供一些值进行处理),您可能希望使用以下示例。它不应该干扰您当前的变量(如果使用正确)。
在主文件中:
$msg = include('myfile.php');
并在myfile.php
文件中:
<?php
return 'my template';
这样,您的文件只能通过返回特定变量来工作,并且不会破坏其他文件的命名约定。您也可以随意调用变量,而无需更改配置文件的内容。
在某些情况下(杂乱的编码,HTML等),您可能需要使用此解决方案。以下代码捕获文件发出的所有内容并将其保存到变量 $msg
中,然后关闭缓冲区。
ob_start();
include('myfile.php');
$msg = ob_end_flush();
这样,如果你有例如。 echo
调用或一些静态HTML,在包含的文件中,它不会“按原样”编写,并且可以进一步处理(例如,您的模板中的某些标记可能会被您要使用的实际数据替换) )。
所以,基本上,在这种情况下,您甚至可以在myfile.php
中写下:
<?php
echo 'my template';
甚至:
my template
(只是一个文本,而不是PHP代码)。
答案 2 :(得分:0)
您可以在PHP脚本中使用$msg = "…";
并在必要时包含此内容。但是,如果它只是纯文本,您可以考虑将其保存为.txt
文件并使用file_get_contents
。
答案 3 :(得分:0)
您可以在模板文件中写下:
$msg = """ the message
bla bla bla""";
然后,当您从另一个php模块中包含该文件时,您可以访问此变量。
答案 4 :(得分:0)
您可以将其保存到原始文本文件中并使用file_get_contents加载它,或者将包含文本的字符串保存在另一个php文件中并包含它。
示例:
的template.php:
<?php
$globalMessage = "template string goes here";
?>
其他所有文件:
<?php
include 'Template.php';
echo $globalMessage; // has access
?>
答案 5 :(得分:0)
如果要将模板文件的内容放入$ msg变量中,可以执行以下操作:
<?php
$msg= get_include_contents('email_template_file.php');
function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}
?>
现在您的$ msg变量包含您的电子邮件的文本。如果您有一些通用术语,如用户名,电话号码等,您希望对不同的用户有所不同。将它们存储在模板文件中的{username},{phone-number}等令牌中。获得$ msg变量中的内容后,您可以使用以下内容:
<?php str_replace('{username}',$username,$msg); ?>
为要发送邮件的每个用户动态更改值。