我正在尝试使用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
如何删除此内容?
答案 0 :(得分:2)
Object msg = message.getContent();
Multipart mp = (Multipart) msg;
message.getContent()
不一定需要是多部分消息 - 如果它不是多部分,它会将纯消息内容作为字符串返回。
if (msg istanceof Multipart) {
// your multipart handling code
} else {
String s = (String) msg;
System.out.println("Content:" + s);
}
-edit -
还有第三种情况,即返回输入流:http://docs.oracle.com/javaee/6/api/javax/mail/Part.html#getContent()
答案 1 :(得分:1)
似乎发送的电子邮件不是Multipart内容类型。检查电子邮件是否首先包含附件:
String contentType = message.getContentType();
if (contentType.contains("multipart")) {
}
答案 2 :(得分:1)
返回对象的类型取决于内容本身。为text/plain
内容返回的对象通常是String
个对象。为multipart
内容返回的对象始终是Multipart
子类。
使用perator instanceof
,找出对象的哪个类。
Object content = message.getContent();
if(content instanceof String) {
...
} else if(content instanceof Multipart) {
...
}