Postfix が超長い行smtp_line_length_limit
(通常は 998 文字) の後に折り返さないようにするために、私は現在、php の整頓されたライブラリを使用して、HTML メールで長い行を折り返しています (関連する質問を参照)。
$oTidy = new tidy();
$message = $oTidy->repairString($message,
array("show-errors" => 0, "show-warnings" => false, "force-output" => true,
"alt-text" => "Please display images", "bare" => true, "doctype" => "auto",
"drop-empty-paras" => false, "fix-bad-comments" => false, "fix-uri" => true,
"join-styles" => false, "merge-divs" => true, "merge-spans" => true,
"preserve-entities" => true, "wrap" => 68),
"utf8"
);
Tidy は、HTML と CSS を有効のままにすることに関して、長い行をラップするのに非常に優れています。
残念ながら、無効な HTML マークアップを修正しようとしたり、HTML タグや Doctype を変更したりするのと同じようなことをします。
ただし、必要なのは行の折り返しだけです-tidyが行う他のことはオーバーヘッドであり、他の何よりも面倒な場合があります。
今、私はPHPMailerのwrapText()
関数を使用しようとしました。残念ながら、私には役に立たないバグが見つかりました。
PHPMailer はこのソースコードを変換します
<html>
<body>
Loremipsumdolorsitametconsetetursadipscing<span style="font-family:'Courier New',sans-serif">lorem</span>
</body>
</html>
に
<html>
<body>
Loremipsumdolorsitametconsete<span style="font-family:'Courier
New',sans-serif">lorem</span>
</body>
</html>
一部のクライアントで、単語 lorem のフォント形式 (Courier New) が壊れています。
今私の質問:
HTML と CSS を損傷することなく HTML 行を安全にラップするにはどうすればよいですか?
Tidyはどのようにそれを行いますか?DOM パーサーを使用する必要がありますか? Tidy ソース コードの php バージョンはありますか (見つけられませんでした)。