通过PHP使用变量和外部HTML模板发送HTML电子邮件

时间:2019-02-27 21:51:19

标签: php html email html-email

我正在尝试通过PHP发送电子邮件。最初,我的$ message变量和用户输入的PHP变量都设置为html。效果很好-我收到的电子邮件中包含正确的变量和全部信息。

然后,我尝试包含一些逻辑以检查用户从他们填写的表单中选择了哪个服务,并在此基础上更改了$ message变量的内容(即,输出的html内容略有变化)不同)。

为了不让一堆html文件太长,我决定将html代码移到单独的文件中,并将$ message变量=设置为file_get_contents()。电子邮件发送正常,但是我的变量不再显示用户输入数据。我什至尝试在HTML模板所在的文件顶部使用session_start()。

<?php
session_start();

$_SESSION["service"] = $_POST['service'];

if (isset($_POST['submit'])){
  $service = $_POST['service'];
  
  if($_POST['service']=="Service 1"){$message = 'email_template-service-1.php';}
    else $message = file_get_contents("email_template-service-2.php");

    $to = 'email@example.com';
    $subject = 'Subject';
    $headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .

    mail($to, $subject, $message, $headers);
    header('Location: /confirmation.php');
}

else {header('Location: /index.php');}
?>

我在这里错过了什么吗? TIA!

1 个答案:

答案 0 :(得分:0)

更好的方法是仅包含文件并使用p

ob_get_clean()

ob_start(); if($_POST['service']=="Service 1") {include 'email_template-service-1.php';} else include 'email_template-service-2.php'; $message = ob_get_clean(); ob_start()之间回显的所有内容都将进入$message = ob_get_clean()变量。