Eメールをパースして本文を抜き出そうと考えており、パース自体は完了しているのですがメール構成のバリエーションが多くどのようなルールで抜き出せば正しく扱えるのか悩んでいます。
マルチパートでない場合はヘッダの Content-type が「text/plain」または「text/html」となっているはずなのでこれは簡単に判別できます。
添付を持たない場合は「multipart/alternative」の中に「text/plain」と「text/html」が含まれる形になっているかと思います。
添付やContent-IDを利用するものがあれば「multipart/mixed」→「multipart/related」→「multipart/alternative」→「text/plain & text/html」のような階層になっていることがあります。
また、「multipart/related」がなく、「multipart/mixed」→「text/plain & text/html」のようになっていることもあるので法則性がつかめません。
稀なケースですが「multipart/report」→「multipart/related」以下同様 となっているものも見られました。
強引にやるなら最初に見つかった「text/html」か「text/plain」を本文と決めつけてもほぼ当たっていそうですが例外もあるかと思います。
HTMLとプレーンテキストをメール中から抜き出す際、どのような法則性や条件に従って階層を調べていけば例外なく正しい本文にたどり着くことができるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。