格式化电子邮件表单响应

时间:2012-06-14 21:07:27

标签: php

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

<?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");
?>

这使得邮件的格式非常易于逐行阅读,但客户希望它看起来更像它来自的形式!即使我可以将线条与水平规则分开并对齐响应,也可能是这样的 - 这是否可能?

由于 吉姆

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

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

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

这将使输出看起来像这样:

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

答案 2 :(得分:1)

你可以用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>";