2013-04-12 1 views
1

Я получаю сообщение с сервера IMAP (Gmail) и пытаясь его распечатать вместе с некоторой информацией об этом, в конечном счете, для хранения в строке анализироваться позже. Я распечатав следующееConvert com.sun.mail.imap.IMAPСообщение в строку

System.out.println(message.getSubject()); 
System.out.println(message.getFrom()[0]); 
System.out.println(message.getReceivedDate()); 
System.out.println(message.getContent().toString()); 

и это то, что он печатает

Your Order with Amazon.com 
"[email protected]" <[email protected]> 
Tue Dec 30 23:14:01 EST 2008 
[email protected] 

первые 3 печати именно то, что я ожидал, но последний должен быть все сообщение, необходимо его не? Если нет, что мне нужно сделать, чтобы получить все сообщение в виде строки?

ответ

2

IMAPMessage расширяет MIMEMessage, а в соответствии с docs метод getContent() возвращает объект. Тип объекта НЕ гарантированно является строкой. В вашем случае возвращаемый объект - MIMEMultipart. Проверьте этот ответ FAQ и его пример (msgshow.java) для обработки объекта MIMEMultipart.

+0

Благодарим вас за это. На данный момент, я не смогу смотреть на него снова до понедельника, но когда я это сделаю, я, вероятно, завершу это в качестве ответа. – Wingdom

0

Это потому, что класс MimeMultipart не реализует метод toString. Я не тестировал это, но вы всегда можете попробовать это.

((MimeMultipart)message.getContent()).writeTo(System.out); 

Как указано в другом сообщении, будьте осторожны, потому что не гарантируется всегда возврат MimeMultipart.