Я использую JavaMail для получения почты.Сначала я занимаюсь разработкой под Mac OS X. Пример, который я нашел из Интернета, выглядит следующим образом:
public void getMailContent(Part part) throws Exception {
String contenttype = part.getContentType();
int nameindex = contenttype.indexOf("name");
boolean conname = false;
if (nameindex != -1)
conname = true;
System.out.println("CONTENTTYPE: " + contenttype);
if (part.isMimeType("text/plain") && !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("text/html") && !conname) {
bodytext.append((String) part.getContent());
} else if (part.isMimeType("multipart/*")) {
Multipart multipart = (Multipart) part.getContent();
int counts = multipart.getCount();
for (int i = 0; i < counts; i++) {
getMailContent(multipart.getBodyPart(i));
}
} else if (part.isMimeType("message/rfc822")) {
getMailContent((Part) part.getContent());
} else {}
}
Но я обнаружил, что это не работает. Возвращаемое значение является расширением InputStream.Поэтому я использую это для решения проблемы.
InputStreamReader isr = new InputStreamReader((InputStream) part.getContent(), language);
BufferedReader br = new BufferedReader(isr);
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
result = MimeUtility.decodeText(sb.toString());
Но недавно я получил новый компьютер и запустил код выше под Windows 7, он также не работает. Исключением является java.lang.String cannot be cast to java.io.InputStream
.part.getContent () возвращает строку в качестве примера в интернете.
Я просто не знаю причину. И как правильно работать на Mac и Windows или любым способом, чтобы избежать этой проблемы и получитьсодержание части.
Спасибо.