Почему я не могу разобрать вложение javamail с помощью toString? - PullRequest
1 голос
/ 11 августа 2010

Мне кажется, приведенный ниже фрагмент должен работать, но "mp.getBodyPart (1) .getContent (). ToString ()" возвращает

com.sun.mail.util.BASE64DecoderStream@44b07df8

вместо содержимого вложения.

public class GMailParser {
    public String getParsedMessage(Message message) throws Exception {
        try {
            Multipart mp = (Multipart) message.getContent();
            String s = mp.getBodyPart(1).getContent().toString();
            if (s.contains("pattern 1")) {
                return "return 1";
            } else if (s.contains("pattern 2")) {
                return "return 2";
            }
            ...

Ответы [ 2 ]

3 голосов
/ 11 августа 2010

Это просто означает, что класс BASE64DecoderStream не предоставляет пользовательское определение toString.Определение toString по умолчанию состоит в том, чтобы отобразить имя класса + '@' + хэш-код, который вы видите.

Чтобы получить «содержимое» потока, вам необходимо использовать метод read ().

1 голос
/ 11 августа 2010

Это анализирует вложения BASE64DecoderStream точно по мере необходимости.

private String getParsedAttachment(BodyPart bp) throws Exception {
    InputStream is = null;
    ByteArrayOutputStream os = null;
    try {
        is = bp.getInputStream();
        os = new ByteArrayOutputStream(256);
        int c = 0;
        while ((c = is.read()) != -1) {
            os.write(c);
        }
        String s = os.toString(); 
        if (s.contains("pattern 1")) { 
            return "return 1"; 
        } else if (s.contains("pattern 2")) { 
            return "return 2"; 
        } 
        ... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...