java代理实现domino web邮件下载

来源:互联网 发布:和社交网络类似的电影 编辑:程序博客网 时间:2024/05/23 13:48

【背景】

           近日在研究domino web邮件下载功能,下载的邮件可以导入foxmail、outlook邮件客户端,下载的邮件格式为eml。

【参考代码】(需要下载jmail.jar包)

private void makeEml(String unid) {Document memo=null;RichTextItem body=null;try {memo = maildb.getDocumentByUNID(unid);String mailtime=((String) memo.getCreated().getLocalTime());String d_email = memo.getItemValueString("From");Vector v_to = memo.getItemValue("SendTo");Vector v_cc = memo.getItemValue("CopyTo");Vector v_bcc = memo.getItemValue("BlindCopyTo");String m_subject = memo.getItemValueString("Subject");String m_text = memo.getItemValueString("Body");Properties props = new Properties();Session session = Session.getInstance(props, null);//System.out.println("-----00000000------");try {MimeMessage msg = new MimeMessage(session);msg.setSubject(m_subject);//msg.setFrom(new InternetAddress(javax.mail.internet.MimeUtility.encodeText(d_email,"UTF-8", "B").replaceAll(" ", "")));msg.setFrom(new InternetAddress(javax.mail.internet.MimeUtility.encodeText((String)d_email,"UTF-8", "B").replaceAll(" ", "")));//System.out.println("-----111111------");for (int i=0; i<v_to.size(); i++){System.out.println("-----111111---0000---="+javax.mail.internet.MimeUtility.encodeText((String) v_to.elementAt(i),"UTF-8", "B").replaceAll(" ", ""));InternetAddress[] toaddress = InternetAddress.parse(javax.mail.internet.MimeUtility.encodeText((String) v_to.elementAt(i),"UTF-8", "B").replaceAll(" ", ""));                        msg.addRecipients(Message.RecipientType.TO, toaddress);//msg.addRecipients(Message.RecipientType.TO, toaddress);//System.out.println("-----111111---1111--222-");}for (int i=0; i<v_cc.size(); i++){InternetAddress[] ccaddress = InternetAddress.parse(javax.mail.internet.MimeUtility.encodeText((String) v_cc.elementAt(i),"UTF-8", "B").replaceAll(" ", ""));msg.addRecipients(Message.RecipientType.CC, ccaddress);}//System.out.println("-----111111--333----");for (int i=0; i<v_bcc.size(); i++){InternetAddress[] bccaddress = InternetAddress.parse(javax.mail.internet.MimeUtility.encodeText((String) v_bcc.elementAt(i),"UTF-8", "B").replaceAll(" ", ""));msg.addRecipients(Message.RecipientType.BCC, bccaddress);}MimeBodyPart p1 = new MimeBodyPart();p1.setText(m_text);Multipart mp = new MimeMultipart();mp.addBodyPart(p1);String extractMimePath=extractPath+memo.getNoteID()+"/";File extractDir2 = new File(extractMimePath);extractDir2.mkdirs();MIMEEntity mime = memo.getMIMEEntity();if (mime != null) {MimeBodyPart p2 = new MimeBodyPart(mime.getInputStream());mp.addBodyPart(p2);} else {                         //System.out.println("Body="+m_text);                         //System.out.println("Body="+memo.getFirstItem("Body").getType())     body = (RichTextItem) memo.getFirstItem("Body");Vector v = body.getEmbeddedObjects();Enumeration e = v.elements();while (e.hasMoreElements()) {eo = (EmbeddedObject) e.nextElement();filename = eo.getName();eo.extractFile(extractMimePath + filename);FileDataSource fds = new FileDataSource(extractMimePath+ filename);MimeBodyPart p2 = new MimeBodyPart();p2.setDataHandler(new DataHandler(fds));p2.setHeader("Content-Transfer-Encoding", "Base64");p2.setFileName(MimeUtility.encodeText(filename));mp.addBodyPart(p2);}}msg.setContent(mp);File emlFile = new File(extractPath+StringFilter(m_subject+" "+mailtime)+".eml");    //File emlFile = new File(extractPath+memo.getNoteID()+".eml");emlFile.createNewFile();FileOutputStream outFile = new FileOutputStream(emlFile);msg.writeTo(outFile);outFile.close();deleteDir(extractDir2);} catch (MessagingException mex) {deleteDir(extractDir2);mex.printStackTrace();}} catch (Exception e) {e.printStackTrace();}finally{recycleRes(eo);recycleRes(body);recycleRes(memo);}}public static boolean deleteDir(File dir) {if (dir.isDirectory()) {String[] children = dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteDir(new File(dir, children[i]));if (!success) {return false;}}}return dir.delete();}public   static   String StringFilter(String   str)     {         String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\]\\\\.<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";      Pattern   p   =   Pattern.compile(regEx);         Matcher   m   =   p.matcher(str);           //m=m.replaceAll("\\\\","");    return   m.replaceAll("").trim();       } 
jar包下载地址:jar包下载


2 0
原创粉丝点击