csdntest.java
上传用户:liangcc
上传日期:2019-05-24
资源大小:4412k
文件大小:3k
源码类别:

WEB邮件程序

开发平台:

Java

  1. package com.softeem.webmail.action.receivemail;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.InputStream;
  7. import java.util.Vector;
  8. import javax.mail.Message;
  9. import javax.mail.Multipart;
  10. import javax.mail.Part;
  11. import javax.servlet.http.HttpServletRequest;
  12. import org.omg.CORBA.Request;
  13. public class csdntest {
  14. public synchronized Vector getAtta(Message message,HttpServletRequest request) {
  15. try {
  16. Vector v_atta = new Vector();//用于存贮附件保存的路径和文件名   
  17. String Content = "";
  18. String[] fileName = null;
  19. InputStream[] inputStream = null;
  20. Object o = message.getContent(); //当Message对象含有附件时,其内容会以Multipart的形式存在   
  21. if (o instanceof String) {
  22. // return   null;   
  23. //不含附件   
  24. } else if (o instanceof Multipart) {
  25. //可能含有附件   
  26. //以Multipart的getBodyPart方法取得内容部分,并以getDisposition方法取得邮件的配置   
  27. Multipart mp = (Multipart) o;
  28. fileName = new String[mp.getCount()];
  29. inputStream = new InputStream[mp.getCount()];
  30. // OnlineEdit oe = new OnlineEdit();
  31. // String Online_ID = oe.getOnline_ID();
  32. for (int i = 0, n = mp.getCount(); i < n; i++) {
  33. Part part = mp.getBodyPart(i);
  34. if (i == 0) {
  35. Content = part.getContent().toString();
  36. }
  37. String disposition = part.getDisposition();
  38. //判断Multipart中是否含有附件的方法.则是依据getDisposition所返回的内容   
  39. if ((disposition != null)
  40. && (disposition.equals(Part.ATTACHMENT) || disposition
  41. .equals(Part.INLINE))) {
  42. fileName[i] = part.getFileName();
  43. System.out.println(fileName[i]);
  44. fileName[i] = fileName[i].valueOf(i)
  45. + fileName[i].substring(fileName[i]
  46. .indexOf("."), fileName[i].length()-2);//更换文件名   
  47. fileName[i] = "E" + "ss" + fileName[i];
  48. //System.out.println(fileName[i]);   
  49. inputStream[i] = part.getInputStream();
  50. System.out.println(inputStream[i].toString());
  51. // PropPath pp = new PropPath();
  52. String pathName = request.getContextPath();
  53. // pathName = pp.getAppPath(pathName);
  54. ////////////////存贮附件保存的路径和文件名   
  55. v_atta.add(pathName + fileName[i]);
  56. ////////////////   
  57. File file = new File(pathName + fileName[i]);
  58. FileOutputStream outfile = new FileOutputStream(file);
  59. BufferedInputStream br = new BufferedInputStream(
  60. inputStream[i]);
  61. BufferedOutputStream bw = new BufferedOutputStream(
  62. outfile);
  63. int b;
  64. while ((b = br.read()) != -1) {
  65. bw.write(b);
  66. }
  67. bw.flush();
  68. outfile.close();
  69. }
  70. }
  71. }
  72. Vector V_res = new Vector();
  73. V_res.add(fileName);
  74. V_res.add(Content);
  75. V_res.add(v_atta);
  76. return V_res;
  77. } catch (Exception e) {
  78. e.printStackTrace();
  79. return null;
  80. }
  81. }
  82. }