Я написал приложение, в котором я получаю сообщение и проверяю его содержимое:
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. Для каждого другого клиента тип контента будет «простым/текстовым», но только для почты Office 365 это будет text/html
. Он записывает данные Part
в ByteArrayOutputStream
, который затем будет преобразован в String
. Это работает, ну, как правило, String
будет содержать содержимое части. Но содержащийся в нем HTML несколько ошибочен.
Вот пример:
http://pastebin.com/5mEYCHxD (отправлено в Pastebin, оно довольно большое).
Обратите внимание на символы =
, которые печатаются в конце почти каждой строки. Это то, что я могу исправить внутри кода, или он должен быть где-то в почтовом клиенте?
Я подумал о том, чтобы прокручивать каждую строку HTML и удалять =
после проверки, что это не часть HTML-тега.
Любая помощь очень ценится, это беспокоило меня уже несколько недель.
Благодаря!