5

これは私が持っているものです:

$msg = "1'2 ’3"4 “5”6 7~8!9@10#11$12%13^14&15*16(17)18}19{20"21:22?23>24<25 ";
mail("myemail@example.com","My subject",$msg);

私が電子メールを受け取るとき、私はこれを受け取ります:

1&#039;2 ’3&quot;4 “5”6 7~8!9@10#11$12%13^14&amp;15*16(17)18}19{20&quot;21:22?23&gt;24&lt;25

だからそれは文字をhtmlに変えると思いますか?何か案は?$msgに保存したものを正確に含むメールを受信する必要があります。ありがとうございます

それはまた私が持っていたリターンブレイクを取り除きました。データベースでは、フィールドにリターンブレークがあり、次のように格納されます。

Hello $name

welcome to $websitename 

thank you, management

これは不完全な例ですが、ご覧のとおり、2つの空の行があります。電子メールが送信されるとき、それらのリターンブレイクは無視され、そのすべてが一列に並んでいます。

4

2 に答える 2

4

次のようなヘッダーを追加してみてください。

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);

こちらをご覧ください: PHP mail()

于 2012-07-03T04:05:30.093 に答える
2

base64コンテンツのマングリングを防ぐために、メッセージをエンコードされた形式内にカプセル化する必要があります。

$msg = "1'2 ’3\"4 “5”6 7~8!9@10#11$12%13^14&15*16(17)18}19{20\"21:22?23>24<25";

$body = chunk_split(base64_encode($msg));

mail("myemail@example.com", "My subject", $body, "Content-Transfer-Encoding: base64");

改行の処理方法は、メール クライアントによって異なります。たとえば、Outlook は改行を押しつぶすことで知られていますが、改行を復元する方法も提供しています。

完全に制御するには、オプションでテキスト モードのフォールバックを使用して、代わりに HTML メールを使用する必要があります。

于 2012-07-03T04:05:12.043 に答える