用System.out.println(msg.getContent());显示邮件内容,结果
总是显示javax.mail.internet.MimeMultipart@c282a1
做了编码转换也不行
但能正确显示发件人,主题等.什么原因呢?

解决方案 »

  1.   

    这个说明你的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());
    }
      

  2.   

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

  3.   

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

  4.   

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