13

この PHP 電子メール関数の結果のランダムな場所に感嘆符が表示されます。行が長すぎるか、メールを Base64 でエンコードする必要があるためだと読みましたが、その方法がわかりません。

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

$to = "you@you.you";
$subject = "Pulling Hair Out";
$from = "me@me.me";
$headers = "From:" . $from;
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 64bit\r\n";

mail($to,$subject,$message,$headers); 

random がないようにこれを修正するにはどうすればよいですか ! 結果で?ありがとう!

4

4 に答える 4

15

ここで述べたように: HTML メールの感嘆符

問題は、文字列が長すぎることです。78 文字を超える HTML 文字列をメール機能にフィードすると、! (強打)あなたの文字列で。

これは、RFC2822 https://www.rfc-editor.org/rfc/rfc2822#section-2.1.1の行の長さの制限によるものです。

于 2013-08-23T17:54:05.763 に答える
10

次のコードを使用してみてください。

$to = "you@you.you";
$subject = "Pulling Hair Out";
$from = "me@me.me";
$headers = "From:" . $from;
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 64bit\r\n";

$finalMessage = wordwrap( $message, 75, "\n" );

mail($to,$subject,$finalMessage,$headers);

問題は、1 行が 998 文字を超えてはならないことです。( https://stackoverflow.com/a/12840338/2136148も参照)

于 2014-12-08T16:41:06.050 に答える
2

そうです、それはあなたのメールが長すぎるからです。メールヘッダーのこの行に置き換えてみてください。

Content-Transfer-Encoding: quoted-printable
于 2013-08-23T17:54:18.500 に答える