Мы выбираем почту (pop3), используя java mail API, и сохраняем ее в базе данных.Мы храним тело html и тело текста в разных столбцах соответственно.Большинство писем содержат текстовые и html части, и мы храним их обе.Чтобы определить, является ли тело html или текстом, мы используем следующий метод
public void dumpPart(part p..) {
if (p.isMimeType("text/html")) {
//store as html body
} else if (p.isMimeType("text/*")) {
// store as text body
} else if (p.isMimeType("multipart/alternative)) {
// get parts in a loop and call dumpPart recursively again
} else if (p.isMimeType("multipart/*")) {
// get parts in a loop and call dumpPart recursively again
} else if (p.isMimeType("rfc..)) {
//
} else {
//handle unknown mime type
Когда мы попадаем в случае неизвестного типа MIME, некоторые письма имеют тип объекта String при вызове getContent (), иСтрока содержит тело HTML.Но мы должны различать, является ли это текстовое сообщение или сообщение HTML.Любое предложение / идея лучше, чем поиск html-тегов для определения строки, соответствует html или нет?
Другой вопрос, в нашей текущей реализации мы не проверяли регистр text / plain , но если if не удается для text / *, значит ли это, что он также вернет false для text / plain ?(У нас больше нет проблемной почты на почтовом сервере, я не могу отлаживать, нам нужно решение, чтобы разобраться с такими же проблемными случаями в будущем)
Я думаю, что наш случай - это строка 299-302 сообщения msgshow..java на
https://github.com/javaee/javamail/blob/master/demo/src/main/java/msgshow.java
здесь мы получили строку, но не знаем, HTML или простой текст?
Аналогичный вопрос на
Тело почтового сообщения Java - html, а текст - text / plain - читайте html
, но в нашем случае сообщение не выполняется, а также составной регистр
https://javaee.github.io/javamail/FAQ#mainbody