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

これにより、メールは 1 行ずつ非常に読みやすい形式にフォーマットされますが、クライアントは元のフォームにもっと似たものにしたいと考えています。横罫線で線を区切って回答を揃えれば何とかなるのですが、これって可能なのでしょうか?

ありがとうジム

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 に答える