1

以下のスニペットは機能するはずですが、「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";
            }
            ...
4

2 に答える 2

3

これは単に、BASE64DecoderStream クラスがカスタムの toString 定義を提供しないことを意味します。デフォルトの toString 定義は、クラス名 + '@' + ハッシュ コードを表示することであり、これが表示されます。

Stream の「コンテンツ」を取得するには、read() メソッドを使用する必要があります。

于 2010-08-10T22:38:04.547 に答える
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"; 
        } 
        ... 
于 2010-08-11T15:07:02.647 に答える