在php中加载html邮件文件
我在一个html文件中实现了一个html电子邮件。我有一个php文件,它使用在php中加载html邮件文件,php,html,email,Php,Html,Email,我在一个html文件中实现了一个html电子邮件。我有一个php文件,它使用PHPMailer类发送电子邮件。 我想要实现的是,我在html中有一些文本,这些文本应该根据我发送电子邮件的人而改变 这是发送电子邮件的php文件 <?php // get variables $contact_name = addslashes($_GET['contact_name']); $contact_phone = addslashes($_GET['contact_phone
PHPMailer
类发送电子邮件。
我想要实现的是,我在html中有一些文本,这些文本应该根据我发送电子邮件的人而改变
这是发送电子邮件的php文件
<?php
// get variables
$contact_name = addslashes($_GET['contact_name']);
$contact_phone = addslashes($_GET['contact_phone']);
$contact_email = addslashes($_GET['contact_email']);
$contact_message = addslashes($_GET['contact_message']);
// send mail
require("class.phpmailer.php");
$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->Host = 'ssl://smtp.gmail.com:465';
$mailer->SMTPAuth = TRUE;
$mailer->Username = 'danyel.p@gmail.com';
$mailer->Password = 'mypass';
$mailer->From = 'contact_email';
$mailer->FromName = 'PS Contact';
$mailer->Subject = $contact_name;
$mailer->AddAddress('pdaniel@gmail.com');
$mailer->Body = $contact_message;
if($mailer->Send())
echo 'ok';
?>
html文件包含一个简单的html邮件,它使用表和它所需要的所有标准实现
我想问比我更勇敢的人,实现这一目标的最佳途径是什么
提前谢谢大家,,
丹尼尔
编辑:现在,在$mailer->Body中,我有$contact\u message变量作为文本电子邮件。。但我希望在该正文中加载一个包含html电子邮件的html文件,并希望以某种方式使用$contact_message变量中的文本更改html电子邮件的正文。基于您希望查看的电子邮件创建条件语句。 然后将其包含在临时php html电子邮件文本中
您还可以将更改的值传递给将实现上述功能的函数。基于您希望查看的电子邮件创建条件语句。 然后将其包含在临时php html电子邮件文本中
您还可以将更改的值传递给将实现上述功能的函数。如果我构建网站,我通常使用模板引擎,比如Smarty。。。您可以在smarty模板文件中编写html邮件。然后,您可以根据标准自动添加所需的文本。只需为模板引擎指定正确的值。如果我创建网站,我通常使用模板引擎,比如Smarty。。。您可以在smarty模板文件中编写html邮件。然后,您可以根据标准自动添加所需的文本。只需将正确的值分配给模板引擎。一个简单的方法是在html文件中使用特殊的标记,这些标记将被调用方替换。例如,假设您有两个可能动态更改内容的变量,
name
,姓氏
,然后在html中放入类似的内容:%%name%%
,%%姓氏%
,然后在调用脚本中:
$html = str_replace("%%NAME%%", $name, $html);
$html = str_replace("%%SURNAME%%", $surname, $html);
或者通过嵌套上述两个:
$html = str_replace("%%NAME%%", $name, str_replace("%%SURNAME%%", $surname, $html));
编辑 如果您有许多变量,一个更优雅的解决方案是:定义一个关联数组,该数组将容纳您的针和针的替代品:
$myReplacements = array ( "%%NAME%%" => $name,
"%%SURNAME%%" => $surname
);
并使用循环使其发生:
foreach ($myReplacements as $needle => $replacement)
$html = str_replace($needle, $replacement, $html);
一个简单的方法是在html文件中使用特殊的标记,这些标记将被调用者替换。例如,假设您有两个可能动态更改内容的变量,
name
,姓氏
,然后在html中放入类似的内容:%%name%%
,%%姓氏%
,然后在调用脚本中:
$html = str_replace("%%NAME%%", $name, $html);
$html = str_replace("%%SURNAME%%", $surname, $html);
或者通过嵌套上述两个:
$html = str_replace("%%NAME%%", $name, str_replace("%%SURNAME%%", $surname, $html));
编辑 如果您有许多变量,一个更优雅的解决方案是:定义一个关联数组,该数组将容纳您的针和针的替代品:
$myReplacements = array ( "%%NAME%%" => $name,
"%%SURNAME%%" => $surname
);
并使用循环使其发生:
foreach ($myReplacements as $needle => $replacement)
$html = str_replace($needle, $replacement, $html);
要回答您的编辑问题,请执行以下操作:
function renderHtmlEmail($body) {
ob_start();
include ('my_html_email.php');
return ob_get_clean();
}
在您的my\u html\u email.php
文件中,您会看到如下内容:
<html>
<body>
<p>....<p>
<!-- the body -->
<?php echo $body; ?>
</body>
</html>
如果需要将其他变量传递到布局/模板文件,请向该方法添加参数,或传递关联数组,如sofunction renderHtmlEmail($viewVars)
和函数内的extract($viewVars)代码>
然后,您将能够在模板中使用这些变量,例如:亲爱的,
如果html文件尚未更改,您可能必须将其从.html更改为.php
也就是说,如果我正确理解了问题。要回答您的编辑:
function renderHtmlEmail($body) {
ob_start();
include ('my_html_email.php');
return ob_get_clean();
}
在您的my\u html\u email.php
文件中,您会看到如下内容:
<html>
<body>
<p>....<p>
<!-- the body -->
<?php echo $body; ?>
</body>
</html>
如果需要将其他变量传递到布局/模板文件,请向该方法添加参数,或传递关联数组,如sofunction renderHtmlEmail($viewVars)
和函数内的extract($viewVars)代码>
然后,您将能够在模板中使用这些变量,例如:亲爱的,
如果html文件尚未更改,您可能必须将其从.html更改为.php
也就是说,如果我理解正确的话。我非常喜欢你的方法:)现在只需再做一步:D如何通过$html=file\u get\u contents(“/path/to/myHtmlFile.html”)将html文件的内容再次加载到phpSimply中;如果你使用这种方法,至少要这样做:不要为你的每一个“替换”调用str_replace。这种方法太酷了:)我正在尝试我们所说的方法,效果非常好!非常感谢pankar和tigrang的参数思想,这种方法使以后修改内容变得简单。也感谢所有在这个网站上发表文章的人question@tigrang1-liner为+1;)我非常喜欢你的方法:)现在只需再做一步:D如何通过$html=file_get_contents(“/path/to/myHtmlFile.html”)将html文件的内容再次加载到phpSimply中;如果你使用这种方法,至少要这样做:不要为你的每一个“替换”调用str_replace。这种方法太酷了:)我正在尝试我们所说的方法,效果非常好!非常感谢pankar和tigrang的参数思想,这种方法使以后修改内容变得简单。也感谢所有在这个网站上发表文章的人question@tigrang1-liner为+1;)