【问题标题】:Sending HTML Email via PHP with Variables and External HTML Template通过 PHP 发送带有变量和外部 HTML 模板的 HTML 电子邮件
【发布时间】:2019-02-27 21:51:19
【问题描述】:

我正在尝试通过 PHP 发送电子邮件。最初我的 $message 变量设置为 html 以及来自用户输入的 PHP 变量。这很好用——我收到了包含正确变量和所有变量的电子邮件。

然后我尝试包含一些逻辑来检查用户从他们填写的表单中选择了哪个服务,并基于此更改 $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');}
?>

我在这里遗漏了什么吗?蒂亚!

【问题讨论】:

  • 用户输入数据发送到哪里? $_POST 还是 $_GET? email_template.php 只是一个静态模板吗?向我们展示您的完整代码,您所拥有的不足以回答您的问题。如果你回显 $message 你会得到什么?
  • 我编辑了帖子以包含代码@DCR

标签: php html email html-email


【解决方案1】:

更好的方法是只包含文件并使用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() 之间的任何回显都将进入 $message 变量。

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 2010-11-29
    • 1970-01-01
    • 2020-08-16
    • 2014-07-29
    • 2022-10-23
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多