Javmail получает содержимое составного сообщения

Я работаю над почтовым клиентом для своего телефона Android и хочу получить содержимое сообщения в формате Multipart.

Текстовый/простой контент я получаю следующим образом:

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.


person jwandscheer    schedule 11.05.2013    source источник


Ответы (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);
            }
        }
    }
person N. Rozeboom    schedule 28.05.2014