メッセージをフェッチしてその内容を確認するアプリケーションを作成しました。
public void getInhoud(Message msg) throws IOException, Exception {
Object contt = msg.getContent();
...
if (contt instanceof String) {
handlePart((Part) msg);
}
...
}
public void handlePart(Part part)
throws MessagingException, IOException, Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
String contentType = part.getContentType();
...
if ((contentType.length() >= 9)
&& (contentType.toLowerCase().substring(
0, 9).equals("text/html"))) {
part.writeTo(out);
String stringS = out.toString();
}
...
}
不要なコードを削除しました。この方法は、Gmail、Hotmail、および Outlook デスクトップ クライアントから送信された電子メールには機能しますが、Office 365 Web クライアントから送信された電子メールには何らかの理由で機能しません。他のすべてのクライアントの場合、コンテンツ タイプは「プレーン/テキスト」になりますが、Office 365 メールの場合のみですtext/html
。のデータを に書き込み、Part
それByteArrayOutputStream
を に変換しString
ます。これは機能します。少なくとも、String
パーツのコンテンツが含まれます。しかし、そこに含まれる HTML には多少の欠陥があります。
例を次に示します: http://pastebin.com/5mEYCHxD (Pastebin に投稿された、かなり大きい)。
=
ほとんどすべての行の終わりに印刷されている記号に注意してください。これはコード内で修正できるものですか、それともメールクライアントのどこかにあるはずですか?
HTMLのすべての行をループして=
、HTMLタグの一部ではないことを確認した後に削除することを考えました。
これは数週間私を悩ませてきました。
ありがとう!