我正在尝试使用JavaMail
阅读邮件内容
Object msg = message.getContent();
Multipart mp = (Multipart) msg;
for(int k = 0; k < mp.getCount(); k++) {
BodyPart bp = mp.getBodyPart(k);
if (bp.isMimeType("text/plain")) {
String s = (String) bp.getContent();
System.out.println("Content:" + s);
}
else if(bp.isMimeType("text/html")) {
String s = (String) bp.getContent();
System.out.println("Content:" + s);
}
}
但是我收到以下错误:
java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.Multipart
如何删除它?
返回对象的类型取决于内容本身。为text/plain
内容返回的对象通常是String
对象。为multipart
内容返回的对象始终是multipart
subclass。
使用operator < code > instance of ,找出对象的类别。
Object content = message.getContent();
if(content instanceof String) {
...
} else if(content instanceof Multipart) {
...
}
Object msg = message.getContent();
Multipart mp = (Multipart) msg;
< code > message . get content()不一定需要是多部分消息-如果它不是多部分消息,它将以字符串形式返回普通消息内容。
if (msg istanceof Multipart) {
// your multipart handling code
} else {
String s = (String) msg;
System.out.println("Content:" + s);
}
-编辑-
还有第三种情况,当输入流返回时:http://docs.oracle.com/javaee/6/api/javax/mail/Part.html#getContent()
发送的电子邮件似乎不是多部分内容类型。首先检查电子邮件是否有附件:
String contentType = message.getContentType();
if (contentType.contains("multipart")) {
}