アプリケーションで電子メールを処理しようとしていますが、メール サーバーがメール テキストのワード ラップを強制しているユーザーから電子メールを受信するまで、すべてが正常に機能しているように見えます。ラップという言葉が RFC 仕様の一部であることは知っているので、適切に表示されるメッセージを取得するためにラップを処理する最良の方法を探しています。
元の電子メール:
これが私の主な問題です。メッセージを電子メールで送信すると、テキストが奇妙に分割されます。メッセージ自体が壊れているように見えます。元のメールがそのように見えないため、なぜそうなのかはわかりません。
受信した電子メールは次のようになります (メール サーバーが挿入する場所を示す CRLF でマークされています)。
これが私の主な問題です。メッセージを電子メールで送信すると、テキストが
奇妙に CRLF ではなく分割されます。メッセージ自体が壊れているように見えます。
私の元の電子メールはCRLFのようには見えないため、なぜこれが当てはまるのかCRLFはわかりません
。
私の処理コードは次のように実行され、結果がデータベースに挿入されます。
$dirty_string = nl2br($dirty_string);
$config = HTMLPurifier_Config::createDefault();
$config->set('AutoFormat.RemoveEmpty', 'true');
$config->set('AutoFormat.RemoveEmpty.RemoveNbsp', 'true');
$config->set('HTML.Allowed', 'a[href],br,p');
$purifier = new HTMLPurifier($config);
$clean_string = $purifier->purify($dirty_string);
以下は、表示される結果です。ページの div が行に対して十分な幅がない場合、ブラウザーは自動的にそれをワードラップしますが、 nl2br() の原因による改行により、次の行が短くなります。
これが私の主な問題です。メッセージを電子メールで送信すると、テキストが 奇妙に
分割されます。 メッセージ自体が壊れ
ているように見えます。 元のメールがそのように見えないため、なぜそうなのか
はわかりません 。
二重の CRLF を新しい段落に変更し、すべての単一の CRLF を削除して、ワードラップが正しく表示される単一の行に行を連結できるのではないかと考えました。しかし、誰かが電子メールで次の箇条書きリストを投稿すると、リストが壊れてしまいます。
これは私のリスト CRLF
- 項目 1 CRLF
- 項目 2 CRLF
など...
どんな助けでも大歓迎です。