附件的获取:   从消息中获取附件比发送它们棘手些,因为 MIME 没有简单的关于附件的概念。当消息包含附件时,消息的内容是个 Multipart 对象。接着,您需要处理每个 Part,获取主要内容和附件。标有从 part.getDisposition() 获得的 Part.ATTACHMENT 配置(disposition)的部件(Part)无疑就是附件。但是,没有配置(以及一个非文本 MIME 类型)和带 Part.INLINE 配置的部件也可能是附件。当配置要么是 Part.ATTACHMENT,要么是 Part.INLINE 时,这个消息部件的内容就能被保存。只要用 getFileName() 和 getInputStream() 就能分别得到原始文件名和输入流。 Multipart mp = (Multipart)message.getContent();
for (int i=0, n=multipart.getCount(); i<n; i++) {
 Part part = multipart.getBodyPart(i));
 String disposition = part.getDisposition();
 if ((disposition != null) &&
   ((disposition.equals(Part.ATTACHMENT) ||
     (disposition.equals(Part.INLINE))) {
  saveFile(part.getFileName(), part.getInputStream());
 }
}   saveFile() 方法仅依据文件名创建了一个 File,它从输入流中将字节读出,然后写入到文件中。万一文件已经存在,就在文件名后添加一个数字作为新文件名,如果这个文件名仍存在,则继续添,直到找不到这样的文件名为止。 // from saveFile()
File file = new File(filename);
for (int i=0; file.exists(); i++) {
file = new File(filename+i);
}   上面的代码涵盖了最简单的情况 - 消息中各部件恰当的标记了。要涵盖所有情况,还要在配置为空时进行处理,并且获取部件的 MIME 类型来进行相应处理。 if (disposition == null) {
 // Check if plain
 MimeBodyPart mbp = (MimeBodyPart)part;
 if (mbp.isMimeType("text/plain")) {
  // Handle plain
 } else {
  // Special non-attachment cases here of image/gif, text/html, ...
 }
...

解决方案 »

  1.   

    http://www.donews.net/morepower/archive/2004/09/20/104390.aspx
      

  2.   

    能否再写清楚点,因为我得到的附件要和内容、标题一一对应,然后将他们保存到数据库中。
    还有我看saveFile那个方法有两个参数的,但后面的saveFile这个方法没有用到那两个参数,一个附件名,一个流,请具体写下如何保存,我主要就是保存gif和jpg附件
      

  3.   

    还有,我想连接email服务器应该如何连接?我从[email protected]里收邮件,用户名tonvy,密码abc应该如何设置??