我在html文件中实现了一个html电子邮件。我有一个php文件,它使用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-&gt; Body我有$ contact_message变量作为文本电子邮件..但我希望在该主体中加载包含html电子邮件的html文件,我想以某种方式更改html电子邮件的正文,其中包含此$ contact_message变量中的文本。答案 0 :(得分:1)
一种简单的方法是在html文件中使用特殊标记,这些标记将被调用者替换。例如,假设您有两个可能动态更改内容的变量,name
,surname
然后在您的html中添加类似的内容:%%NAME%%
,%%SURNAME%%
然后在调用中脚本简单:
$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);
答案 1 :(得分:0)
根据您要查看的电子邮件创建条件语句。 然后在tempalted php html电子邮件文本中包含它。
您还可以将更改的值传递给将实现上述功能的函数。
答案 2 :(得分:0)
如果我建立一个网站,我通常使用模板引擎,像Smarty ......你可以在一个聪明的模板文件中编写你的html邮件。然后,您可以自动根据条件添加想要的文本。只需将正确的值分配给模板引擎即可。
答案 3 :(得分:0)
回答你的编辑:
function renderHtmlEmail($body) {
ob_start();
include ('my_html_email.php');
return ob_get_clean();
}
在my_html_email.php
文件中,您会有类似的内容:
<html>
<body>
<p>....<p>
<!-- the body -->
<?php echo $body; ?>
</body>
</html>
和
$mailer->Body = renderHtmlEmail($contact_message);
如果您需要将其他变量传递给布局/模板文件,请将params添加到该方法,或者传递一个关联数组,如function renderHtmlEmail($viewVars)
和函数extract($viewVars);
然后,您将能够在模板中使用这些变量,例如。 Dear <?php echo $to; ?>,
如果不是.html,您可能需要将html文件从.html更改为.php。
也就是说,如果我正确理解了这个问题。