0

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

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

这以非常容易逐行阅读的方式格式化邮件,但客户希望它看起来更像它来自的表单!即使我可以用水平规则将线条分开并对齐响应,这也是可行的——这甚至可能吗?

谢谢吉姆

4

3 回答 3

6

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

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

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

于 2012-06-14T21:13:55.943 回答
1

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

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

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

Name:    sachleen
Email:   me@sachleen.com
Address: 123 fake st
于 2012-06-14T21:15:22.787 回答
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>";
于 2012-06-14T21:15:52.930 回答