javamail接收邮件不能正确显示正文问题

ikaoni 2007-04-24 11:12:04
用System.out.println(msg.getContent());显示邮件内容,结果
总是显示javax.mail.internet.MimeMultipart@c282a1
做了编码转换也不行
但能正确显示发件人,主题等.

什么原因呢?
...全文
394 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liusx0113 2007-04-24
  • 打赏
  • 举报
回复
这个说明你的msg.getContent()回去的MimeMultipart有多个部分,例如有附件。你用int mpCount = mp.getCount();看看他有多少部分。再判断下:
int mpCount = mp.getCount();
for (int m = 0; m < mpCount; m++) {
BodyPart part = mp.getBodyPart(m);
String disposition = part.getDisposition();
// 判断是否有附件
if (disposition != null && disposition.equals(Part.ATTACHMENT)) {
//打印出附件名
System.out.println(part.getFileName());//名字若是中文,要经过了base64转换一下
} else {
// 不是附件,就只显示文本内容
System.out.println(part.getContent());
}
ikaoni 2007-04-24
  • 打赏
  • 举报
回复
谢谢liusx0113魔狂

针对这两个问题能否给段代码示例,
我不知道怎样用base64转换呢,还有怎样看类型再用getContent()啊.


wmzsl 2007-04-24
  • 打赏
  • 举报
回复
编码问题
liusx0113 2007-04-24
  • 打赏
  • 举报
回复
第一个是邮件编码问题,不识别gbk,你可以用base64转换一下,就可以正常显示了。
每二个返回还是MimeMultipart。你用getContentType()方法看下他的类型。再次用下getContent()方法应该就可以了吧。例如这样写邮件的发送,返回的就是MimeMultipart,应该就会出现每二种情况。
发邮件是msg.setSubject("测试标题");
Multipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
contentPart.setText("测试内容!");
multipart.addBodyPart(contentPart);
msg.setContent(multipart);
ikaoni 2007-04-24
  • 打赏
  • 举报
回复
谢谢

按你说的改了以后做了测试,有得邮件正常显示了.
可是有的邮件显示:java.io.UnsupportedEncodingException:gbk
有的邮件显示:javax.mail.internet.MimeMultipart@8bdcd2

请问如何修改啊?

81,090

社区成员

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

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