Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中加载html邮件文件_Php_Html_Email - Fatal编程技术网

在php中加载html邮件文件

在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

我在一个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->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>
如果需要将其他变量传递到布局/模板文件,请向该方法添加参数,或传递关联数组,如so
function 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>
如果需要将其他变量传递到布局/模板文件,请向该方法添加参数,或传递关联数组,如so
function 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;)