如何在html邮件中输入php变量

如何在html邮件中输入php变量,php,html,webforms,Php,Html,Webforms,你好,我正试图通过PHP网络表单发送一封HTML电子邮件。表单工作正常,如果我将$name、$address等变量传递到消息中,它会正常运行,但是当我尝试使用HTML格式化它时,我似乎无法将这些变量传递到消息中。这是我在w3schools上找到的一个示例代码,但我似乎无法调整它以实现我的目标: <?php .... $to = "somebody@example.com, somebodyelse@example.com"; $subject = "HTML email"; $messa

你好,我正试图通过PHP网络表单发送一封HTML电子邮件。表单工作正常,如果我将$name、$address等变量传递到消息中,它会正常运行,但是当我尝试使用HTML格式化它时,我似乎无法将这些变量传递到消息中。这是我在w3schools上找到的一个示例代码,但我似乎无法调整它以实现我的目标:

<?php
....
$to = "somebody@example.com, somebodyelse@example.com";
$subject = "HTML email";

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";
 ....
?>

我要做的是传递变量$name,在它上面写着“johndoe”,我想一旦我明白了这一点,我也应该能够传递所有其他变量

提前感谢您的帮助。

$message=”
$message = "
  <html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>".$firstname."</td>
<td>".$lastname."</td>
</tr>
</table>
</body>
</html>
";
HTML电子邮件 此电子邮件包含HTML标记

名字 姓氏 “$firstname。” “$lastname。” ";
$message=”
HTML电子邮件
此电子邮件包含HTML标记

名字 姓氏 “$firstname。” “$lastname。” ";
您应该将名称拆分为两个ID变量,例如
$first\u name
$second\u name
。这样做可以:

<?php

$split_names = explode(' ', $name); // assuming you have a space between both

$first_name = $split_names[0];
$last_name = $split_names[1];

?>

然后你可以这样做:

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>" . $first_name . "</td>
<td>" . $second_name . "</td>
</tr>
</table>
</body>
</html>
";
 ....
?>
$message=”
HTML电子邮件
此电子邮件包含HTML标记

名字 姓氏 " . $名字。" " . $第二个名字。" "; .... ?>
您应该将名称拆分为两个ID变量,例如
$first\u name
$second\u name
。这样做可以:

<?php

$split_names = explode(' ', $name); // assuming you have a space between both

$first_name = $split_names[0];
$last_name = $split_names[1];

?>

然后你可以这样做:

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>" . $first_name . "</td>
<td>" . $second_name . "</td>
</tr>
</table>
</body>
</html>
";
 ....
?>
$message=”
HTML电子邮件
此电子邮件包含HTML标记

名字 姓氏 " . $名字。" " . $第二个名字。" "; .... ?>
为了将变量放入消息中,如果使用双引号,则只需将变量包含在字符串中即可:

乙二醇

$message=”
...
$name
...
";
你也可以从绳子中挣脱出来

$message = "
<html>
...
<tr>
<td>".$name."</td>
</tr>
...
</html>
";
$message=”
...
“$name。”
...
";
这将使用单引号或双引号(我个人更喜欢使用单引号的方法)


但是,当您收到此电子邮件时,您将看到原始html。为了正确显示html,您需要设置适当的邮件标题。有一些示例说明了如何执行此操作,以及

为了将变量放入消息中,如果您使用双引号,您应该能够将变量包含在字符串中:

乙二醇

$message=”
...
$name
...
";
你也可以从绳子中挣脱出来

$message = "
<html>
...
<tr>
<td>".$name."</td>
</tr>
...
</html>
";
$message=”
...
“$name。”
...
";
这将使用单引号或双引号(我个人更喜欢使用单引号的方法)


但是,当您收到此电子邮件时,您将看到原始html。为了正确显示html,您需要设置适当的邮件标题。这里有一些例子说明了如何做到这一点,您可以这样做:

$message = "
<html>
...
<tr>
<td>".htmlspecialchars($name)."</td>
</tr>
...
</html>
";
$message=”
...
“.htmlspecialchars($name)。”
...
";

非常重要是为了逃避不受您控制(即从表单收集)的内容,以防止注入攻击。在这种情况下,我们使用。

您可以这样做:

$message = "
<html>
...
<tr>
<td>".htmlspecialchars($name)."</td>
</tr>
...
</html>
";
$message=”
...
“.htmlspecialchars($name)。”
...
";

非常重要是为了逃避不受您控制(即从表单收集)的内容,以防止注入攻击。在这种情况下,我们使用。

您能解释一下不能传递变量的意思吗?如果在
标记之间放入$name,将发送什么?请确保正在清理从表单收集的数据。如果你不这样做,你就有可能受到代码注入攻击。你的电子邮件格式非常糟糕-HTML部分必须有mime类型、配置和编码以及分隔符。虽然某些MUA仍会呈现它,但您可能希望获得类似phpmailer的功能,它可以正确地进行呈现。@symcbean:或者只使用phpmailer/Swiftmailer为您完成所有这些,而不是尝试手动构建mime信封。您能解释一下无法传递变量的含义吗?如果在
标记之间放入$name,将发送什么?请确保正在清理从表单收集的数据。如果你不这样做,你就有可能受到代码注入攻击。你的电子邮件格式非常糟糕-HTML部分必须有mime类型、配置和编码以及分隔符。虽然某些MUA仍会呈现它,但您可能希望使用phpmailer之类的工具来正确地呈现它。@symcbean:或者只使用phpmailer/Swiftmailer来为您完成所有这些,而不是尝试手动构建mime信封。或者只使用herdoc,它完全不需要转义内部引号。没有理由关闭字符串并连接。任何带有语法高亮显示的稍微合适的编辑器都会看到内部变量并高亮显示它们。herdoc也会完成这项工作。我之所以喜欢使用单引号并关闭字符串,是因为我不喜欢PHP自动解析变量等的双引号字符串的方式,大多数情况下都是不必要的。我读过的所有最佳实践指南都建议不要在php中使用双引号,除非出于性能原因特别需要(我并不认为这有多大区别——我现在更习惯这样做!)如果不使用变量,那么就有NOWDOC(),这是一个单引号,相当于一个herdoc的双引号。我尝试在没有关闭和连接的情况下传入$name,但没有成功。所以当我使用第二种方法时,效果很好!谢谢大家的帮助!或者只使用一个herdoc,它完全不需要转义内部引号。没有理由关闭字符串并连接。任何带有语法高亮显示的稍微合适的编辑器都会看到内部变量并高亮显示它们。herdoc也会完成这项工作。我喜欢用罪的原因