设置电子邮件表单响应的格式


Formatting email form response

我创建了一个使用此脚本的电子邮件表单:

<?php
foreach ($_POST as $field=>$value)
{
$formcontent .= "$field: $value'n";
}
$formcontent .= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];

$recipient = "andrew.***y@***********.co.uk";
$subject = "Event feedback form";
$mailheader = "From: web.form@**********.co.uk'r'n";
$mailheader .= "Reply-To: $email'r'n";
$mailheader .= "MIME-Version: 1.0'r'n";

mail($recipient, $subject, $formcontent, $mailheader) or die("Failure!");
header("location:http://www.**********.co.uk");
?>

这会以非常易于逐行阅读的方式格式化邮件,但客户希望它看起来更像它来自的形式!即使我可以用水平规则分隔线条并对齐响应,那也会是某种东西 - 这可能吗?

谢谢吉姆

您可以通过在标题中添加正确的行来创建 html 电子邮件。然后,您可以添加表格,段落标签,行等。请记住,电子邮件客户端无法呈现浏览器可以呈现的所有内容,因此请温和地处理 html。

$mailHeader .= "Content-type: text/html; charset=iso-8859-1'r'n";

另外,请注意,您创建电子邮件的方式容易受到电子邮件注入攻击。在此处阅读更多内容: http://www.phpsecure.info/v2/article/MailHeadersInject.en.php

您可以使用 html 表格设置其格式。

$mailHeader .= "Content-type: text/html; charset=iso-8859-1'r'n";
$formcontent .="<table border='1'>";
foreach ($_POST as $field => $value) {
  $formcontent .= "<tr>";
  $formcontent .= "<td>$field:</td> <td>$value</td>";
  $formcontent .= "</tr>";
}
$formcontent .= '<tr><td>User-Agent: </td><td>'.$_SERVER['HTTP_USER_AGENT'].'</td>';
$formcontent .= "</table>";

如果您不能或不想在电子邮件中使用 HTML,您至少可以使用选项卡来对齐文本,使其看起来更好一点。

$formcontent .= "$field:'t$value'n";

这将使输出如下所示:

Name:    sachleen
Email:   me@sachleen.com
Address: 123 fake st