用javamail 读邮件内容出现的异常:javax.mail.internet.ParseException

wang_2000 2008-03-18 09:03:26
解析邮件的代码:
此方法返回的是邮件的内容
public static String getMailContent(Part part){
StringBuffer bodytext = new StringBuffer();
try{
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(contenttype.startsWith("multipart/alternative")){
Multipart multipart = (Multipart)part.getContent();
String p =getMailContent((Part)multipart.getBodyPart(1));
bodytext.append(p);
}
}catch(Exception ex){
ex.printStackTrace();
}
return bodytext.toString();
}


偶在解析带附件的邮件是,出现了此异常:

javax.mail.internet.ParseException
at javax.mail.internet.ParameterList.<init>(ParameterList.java:61)
at javax.mail.internet.ContentType.<init>(ContentType.java:83)
at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:269)
at javax.mail.internet.MimeMultipart.getBodyPart(MimeMultipart.java:172)
at Mail.MailManager.getMailContent(MailManager.java:303)
...全文
991 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_duncan 2011-04-29
  • 打赏
  • 举报
回复
爱吃鱼的IT猫 2010-03-11
  • 打赏
  • 举报
回复
是什么啊
wujianshi001 2009-09-13
  • 打赏
  • 举报
回复
aaa
wang_2000 2008-03-21
  • 打赏
  • 举报
回复
大侠 谢了。。。。

原来是加载的jar 包不一样,这个我考虑过,但没想到eclipse 有自己的mail 组件,

难怪是同一个调用,会有两个不同的结果o(∩_∩)o...哈哈

学识过浅啊,刚刚把jar 包换成一样的了,测试ok ,通过了。。。。



非常感谢。。。。。。



BlueIce0338 2008-03-21
  • 打赏
  • 举报
回复
java mail 好像是有不少bug,
我之前做的一个邮件模块,就修改了javamail1.4.jar里面好几个类

比如:
当邮件地址不规范时、
当使用base64编码中英混合字符串时如果超过每段的长度会自动分段,而分段的位置正好是一个中文的中间则会造成该字乱码
还有当解析base64 gb2312编码的字符串时,就更有问题了,编码时可以编码生僻字,而解码时就乱码了!

类似问题太多了!

另外楼主还应检查是否在一个应用中有多个mail组件,导致你的jar包未先加载,
可以使用
System.out.println(javax.mail.internet.MimeMessage.class.getResource(""));
将当前调用的类及路径都打印出来看看,比如在eclipse中调用的就是插件中的mail组件
wang_2000 2008-03-19
  • 打赏
  • 举报
回复


但是,如果直接在控制台,通过main() 函数调用该方法

是没有问题的,内容都显示正常。

如果在web容器(tomcat)里执行该方法就会遇到这样的异常
cangwu_lee 2008-03-18
  • 打赏
  • 举报
回复

解碼的格式不對

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧