Javmail получает многокомпонентное сообщение
Я работаю над почтовым клиентом для моего телефона Android и хочу получить содержимое сообщения в многочастном формате.
Текст / обычный контент я получаю по следующему пути:
public String getContent(Part p) {
Object contentObject = null;
try {
if (p.isMimeType("text/plain")) {
if (!showStructure && !saveAttachments)
contentObject = p.getContent();
}
InputStream is = (InputStream) contentObject;
reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(System.getProperty("line.separator"));
}
String everything = sb.toString();
System.out.println(everything);
return everything;
} catch (Exception e) {
return "Fehler: " + e;
}
}
Как я могу получить текст содержимого многочастного сообщения? Я уже попробовал это:
[...]
} else if (p.isMimeType("multipart/*")) {
Multipart mp = (Multipart) p.getContent();
level++;
int count = mp.getCount();
for (int i = 0; i < count; i++)
contentObject = getContent(mp.getBodyPart(i));
level--;
}
(...) Затем читатель InputStream, но затем я получаю исключение IMAPInputStream не может быть приведен к javax.mail.Multipart.
1 ответ
Вы должны начать с запроса, как
ServletRequest request
После этого вы принимаете запрос и спрашиваете, является ли он многочастным запросом. надеюсь, это поможет
HttpServletRequest httpServletRequest = null;
if (request instanceof HttpServletRequest) {
httpServletRequest = (HttpServletRequest) request;
}
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
if (commonsMultipartResolver.isMultipart(httpServletRequest)) {
if (commonsMultipartResolver.isMultipart(null)) {
try {
MultipartHttpServletRequest multipartHttpServletRequest = commonsMultipartResolver.resolveMultipart(httpServletRequest);
Enumeration<String> enumKey = multipartHttpServletRequest.getParameterNames();
while(enumKey.hasMoreElements()) {
String key = enumKey.nextElement();
System.out.println("multipart " + key + ": " + multipartHttpServletRequest.getParameter(key));
}
} catch (Exception ex) {
System.out.println("Exception TEST: " + ex);
}
}
}