java代理实现domino web邮件下载
2014-07-23 17:51
344 查看
【背景】
近日在研究domino web邮件下载功能,下载的邮件可以导入foxmail、outlook邮件客户端,下载的邮件格式为eml。
【参考代码】(需要下载jmail.jar包)
近日在研究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包下载
相关文章推荐
- java实现代理domino web邮件下载
- Domino Java代理实现Ftp上传、下载
- Java代理程序实现web方式管理邮件组成员
- JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载)
- JavaWeb中struts2实现文件上传下载功能实例解析
- java web 一行代码实现文件上传下载
- Java实现邮件代理发送
- 在Domino中使用Java系列实例1--在Lotus Domino中使用JavaMail实现高效外发邮件
- domino 代理发送邮件,并且邮件发件人是指定用户的实现方法
- Java 导出CSV文件及实现web下载CSV
- java通过struts实现web中的文件下载
- javaweb-图片的下载实现及分别处理浏览器乱码问题
- 用JAVA访问Domino资源,实现Domino邮件的RSS
- domino代理发送邮件,邮件正文为表格的实现方法
- java web 实现 文件上传及下载
- java resteasy restful webservice教程(六):实现文件下载功能实例文章来源:爱上123 原文地址:http://www.ishang123.com/jishubowen/
- Web项目中使用java Struts2实现Zip、xml文件的动态创建和下载(Zip文件中动态存在多个xml文件)
- java web 实现上传下载
- javaweb-使用servlet实现文件下载
- Java web 中实现简单的文件上传与下载——学习笔记