Определите тип тела сообщения, если тип MIME неизвестен - PullRequest
0 голосов
/ 19 октября 2018

Мы выбираем почту (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

...