2010-08-10 5 views
1

Мне кажется, фрагмент кода ниже должен работать, но "mp.getBodyPart (1) .getContent(). ToString()" возвращаетПочему я не могу разобрать вложение javamail с помощью toString?

[email protected]

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

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"; 
      } 
      ... 
+0

Смотрите это также http://stackoverflow.com/questions/5628395/javamail-parsing-email-content-cant-seem-to-get-it-to-work-message-getcont/26142591# 26142591 – NoNaMe

ответ

3

Это просто означает, что класс BASE64DecoderStream не предоставляет настраиваемое определение toString. По умолчанию определение toString должно отображать имя класса + '@' + Hash Code, что и есть то, что вы видите.

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

+0

Спасибо, миллион! Работает сейчас. – jacknad

1

Это анализирует приложения 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"; 
     } 
     ... 

 Смежные вопросы

  • Нет связанных вопросов^_^