- 浏览: 182834 次
- 性别:
- 来自: 北京
最新评论
-
u011374223:
获取颜色的方法有两个,07xssfWORKBOOK的需要用这个 ...
apache poi读取excel中的颜色,真是坑爹啊 -
zhangtcb:
读取的颜色和Excel中的不一样啊
apache poi读取excel中的颜色,真是坑爹啊 -
LD_21:
...
log4j日志文件的相对路径 -
xfxlch:
upThx
来,让我们一起画个印章吧 -
xinxinlong:
单元格的style里面有个颜色,如果双击单元格,里面的文字选中 ...
apache poi读取excel中的颜色,真是坑爹啊
主要是为了解决某些邮件客户端发送邮件时把繁体也编码为gb2312,导致乱码出现.
懒得存数据库了,就写文件了.
另没有解决multipart中只取text/html或者text/plain的问题.
长时间潜水,第一次在je发表东西,自己纪念下.
懒得存数据库了,就写文件了.
另没有解决multipart中只取text/html或者text/plain的问题.
长时间潜水,第一次在je发表东西,自己纪念下.
package com.hcycom.lan.test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.Properties; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Folder; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.NoSuchProviderException; import javax.mail.Part; import javax.mail.Session; import javax.mail.Store; import javax.mail.Message.RecipientType; import javax.mail.event.StoreEvent; import javax.mail.event.StoreListener; import javax.mail.internet.ContentType; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import javax.mail.internet.ParseException; import com.sun.mail.pop3.POP3Folder; public class ShowMail { private static final String D_MAIL = "D:/mail/"; private static final String BR = "\n"; public static String replaceGB2312ToGBK(String source) { if (source == null) { return null; } if (source.toLowerCase().indexOf("?gb2312?") != -1) { source = source.replaceAll("\\?[gG][bB]2312\\?", "?gbk?"); } return source; } /** * @param args */ public static void main(String[] args) { new ShowMail().show(); } private void show() { Properties prop = System.getProperties(); Session session = Session.getDefaultInstance(prop); try { Store store = session.getStore("pop3"); store.addStoreListener(new StoreListener() { public void notification(StoreEvent e) { switch (e.getMessageType()) { case StoreEvent.ALERT: System.out.println("alert : " + e.getMessage()); break; case StoreEvent.NOTICE: System.out.println("notice : " + e.getMessage()); break; } } }); store.connect("pop.163.com", "i2534", "password"); if (store.isConnected()) { POP3Folder inbox = (POP3Folder) store.getFolder("INBOX"); if (inbox.exists()) { inbox.open(Folder.READ_ONLY); File dir = new File(D_MAIL); if (!dir.exists()) { dir.mkdirs(); } File uids = new File(dir, "uids"); HashSet set = new HashSet(); HashSet newUids = new HashSet(); if (uids.exists()) { BufferedReader br = new BufferedReader(new FileReader( uids)); String line = null; while ((line = br.readLine()) != null) { set.add(line); } br.close(); } int nCount = inbox.getMessageCount(); System.out.println("Inbox contains " + nCount + " messages."); for (int i = 1; i <= nCount; i++) { System.out.println("now accept " + i); MimeMessage msg = (MimeMessage) inbox.getMessage(i); String uid = inbox.getUID(msg); if (set.contains(uid)) { System.out .println("this message is already exists.skip to next."); continue; } File mail = File.createTempFile(new SimpleDateFormat( "yyyyMMdd_").format(new Date()), ".mail", dir); FileWriter fw = new FileWriter(mail, true); newUids.add(uid); fw.write("UID : " + uid); fw.write(BR); String subject = msg.getHeader("Subject", null); fw .write("Subject : " + MimeUtility .decodeText(replaceGB2312ToGBK(subject))); fw.write(BR); fw.write("Send Date : " + new SimpleDateFormat("yyyy-MM-dd HH:mm") .format(msg.getSentDate())); fw.write(BR); fw.write("From : "); dumpAddresses(msg.getFrom(), fw); fw.write(BR); fw.write("To : "); dumpAddresses(msg.getRecipients(RecipientType.TO), fw); fw.write(BR); fw.write("CC : "); dumpAddresses(msg.getRecipients(RecipientType.CC), fw); fw.write(BR); fw.write("Content type : " + msg.getContentType()); fw.write(BR); parts(msg, fw); fw.flush(); fw.close(); System.out.println("accept over."); } if (!newUids.isEmpty()) { FileWriter fw = new FileWriter(uids, true); for (String s : newUids) { fw.write(s); fw.write(BR); } fw.flush(); fw.close(); } } inbox.close(false); } store.close(); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void dumpAddresses(Address[] addresses, FileWriter fw) throws UnsupportedEncodingException, IOException { if (addresses == null || fw == null) { return; } for (Address address : addresses) { fw.write(MimeUtility.decodeText(replaceGB2312ToGBK(address .toString()))); fw.write(";"); } } private static void parts(Part part, FileWriter fw) { if (part == null || fw == null) { return; } try { Object content = part.getContent(); if (content instanceof Multipart) { MimeMultipart mmp = (MimeMultipart) content; for (int index = 0; index < mmp.getCount(); index++) { parts(mmp.getBodyPart(index), fw); } } else if (content instanceof InputStream) { MimeBodyPart mbp = (MimeBodyPart) part; String contentType = mbp.getContentType(); String name = getFileName(contentType); fw.write("File name : " + name); String cid = null; if ((cid = mbp.getContentID()) != null) { fw.write(" (cid : " + cid + ")"); } String disposition = null; if ((disposition = mbp.getDisposition()) != null) { fw.write(" (disposition : " + disposition + ")"); } fw.write(BR); File file = new File(D_MAIL + name); FileOutputStream fos = new FileOutputStream(file); InputStream is = (InputStream) content; int i = -1; while ((i = is.read()) != -1) { fos.write(i); } fos.flush(); fos.close(); } else if (content instanceof String) { fw.write("----------- part begin -------------"); fw.write(BR); if (part instanceof BodyPart) { MimeBodyPart mbp = (MimeBodyPart) part; String contentType = mbp.getContentType(); String language = getCharset(contentType); String encoding = mbp.getEncoding(); fw.write("Content type : " + contentType); fw.write(BR); if (encoding != null) { fw.write("Encoding : " + encoding); fw.write(BR); } if (mbp.getRawInputStream() != null && encoding != null) { InputStream is = MimeUtility.decode(mbp .getRawInputStream(), encoding); InputStreamReader isr = new InputStreamReader(is, language); BufferedReader br = new BufferedReader(isr); String line = null; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line).append(BR); } fw.write(sb.toString()); fw.write(BR); } } else { fw.write((String) content); fw.write(BR); } fw.write("----------- part end -------------"); fw.write(BR); } } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static String getCharset(String contentType) { String language = null; try { ContentType ct = new ContentType(contentType); language = ct.getParameter("charset"); } catch (ParseException e) { e.printStackTrace(); } if (language == null) { language = MimeUtility.getDefaultJavaCharset(); } if (language.equalsIgnoreCase("gb2312")) { language = "gbk"; } return language; } private static String getFileName(String contentType) { String name = null; try { ContentType ct = new ContentType(contentType); name = ct.getParameter("name"); } catch (ParseException e1) { e1.printStackTrace(); } if (name == null) { name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); } try { name = MimeUtility.decodeText(replaceGB2312ToGBK(name)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return name; } }
发表评论
-
公约数,公倍数和素数的简单计算
2012-04-01 16:08 1331为自己留作备份,省得用到的时候再去寻找 简单的计算最大公约数 ... -
java简单打印
2012-03-08 09:56 1234没什么,就是一个简单的打印,留作存档 publi ... -
httpclient4的封装
2012-01-06 15:11 4636没什么特别的,自己封装着用的. package cpcns. ... -
h2的baseDir
2011-11-11 16:38 1464使用h2 1.3.161.在web项目中.计划在Listene ... -
eclipse下自动打包项目并部署到web项目的lib下
2011-10-18 15:59 5119修改web项目的.settings下的org.eclipse. ... -
获取汉字的五笔,全拼和双拼的工具类
2011-10-10 15:51 2393如题,项目需要,首先可用的自然是pinyin4j. 在不考虑 ... -
五笔86和汉字对照表
2011-10-09 16:53 2533项目要用到汉字转拼音和五笔,拼音容易,使用pinyin4j. ... -
java System属性
2011-09-19 10:14 1387自定义 : java -Dname=value S ... -
log4j日志文件的相对路径
2011-09-01 10:51 6813一直没能很好的解决log4j的日志文件的保存路径.今天恰好又遇 ... -
Apache codec中的base64
2011-07-20 09:46 2287一直使用sun的base64,但是感觉不是很好,毕竟不是标准包 ... -
来,让我们一起画个印章吧
2011-07-04 14:52 4530这几天发现有哥们在介 ... -
svg中的arc转化为java中的arc
2011-05-27 15:31 2682最近项目需要解析svg中的path.直线和贝塞尔曲线都好办,唯 ... -
swing的拖拽(dnd)的简单实现
2011-03-28 10:18 2008这几天项目需要用到dnd,API比较麻烦.在网上找了很多,都只 ... -
自用的MD5计算工具
2011-03-11 15:45 1783/** * 检查输入流的MD5值是否符合.如果MD5为 ... -
用jsoup分析下载巨鲸的mp3
2011-02-25 15:37 1727这两天突然想听听杰克逊的歌.首选当然是巨鲸. 支持正版. ... -
获取子类的泛型参数
2011-01-27 16:03 1358用的时候不好找,今天看nutz的dao的源码看到了,摘出来备份 ... -
简单的通过注解运行的dao
2011-01-26 11:47 1792项目是个老项目,是个比较简单,但是编码比较凌乱的项目.数据库字 ... -
java模拟js的escape和unescape函数
2011-01-05 10:43 3468这个是在网上找的代码,然后修改了下.作用标题已经很明显了. ... -
自己写的多线程对象池
2010-12-10 16:53 1322/** * 排版器的一个公用接口 <br> ... -
apache poi读取excel中的颜色,真是坑爹啊
2010-12-01 16:23 16973工作原因,需要使用poi来读取excel中的所有内容. 其他 ...
相关推荐
在本文中,我们将深入探讨如何使用 JavaMail 收取邮件,包括了解 POP3 和 IMAP 协议以及如何通过 JavaMail API 实现邮件的接收。 首先,我们需要知道发送邮件通常使用 SMTP(简单邮件传输协议),而接收邮件则涉及...
下面我们将详细探讨如何使用JavaMail API实现邮件的收取,特别是如何通过POP3和IMAP协议获取邮件信息。 首先,确保你的项目中已经引入了JavaMail相关的依赖,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖...
根据提供的文件信息,我们可以深入探讨如何使用JavaMail API来发送和接收邮件,特别是通过QQ邮箱服务来进行操作。本文将详细解析文件中提到的关键步骤,并补充更多实用的信息。 ### JavaMail API简介 JavaMail API...
JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...
在JavaMail中使用IMAP协议来收取Exchange 2007中的邮件,首先需要理解以下几个关键概念: 1. **JavaMail API**: JavaMail API提供了一系列的类和接口,如`Session`、`Store`、`Folder`和`Message`,它们是处理邮件...
JavaMail 是一个强大的 Java 库,它允许开发者在应用程序中实现电子邮件的发送和接收功能。这个库支持多种邮件协议,如 SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和 IMAP(因特网消息访问协议)用于...
### JavaMail收发Gmail邮件知识点详解 #### 一、JavaMail简介 JavaMail API是Java平台中的一个标准扩展库,用于发送、接收以及管理电子邮件。它提供了丰富的接口来实现邮件的各种操作,如构建复杂的MIME消息、处理...
JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个库提供了丰富的API,使得开发者可以方便地执行发送、接收、读取和管理邮件的任务。`javamail-1.6`是JavaMail的一个版本,它包含了从早期版本中继承的...
JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的能力。这个库不仅支持SMTP、POP3和IMAP协议,还支持其他的邮件系统协议,如NNTP和EWS。JavaMail API是JavaMail库的核心部分,它提供了一系列的接口...
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。它提供了丰富的API,使得开发者可以方便地处理复杂的邮件操作,包括添加附件、设置HTML内容等。在"javamail附件从流中获取"这个主题中,我们将深入...
javamail所需要的两个jar包。mail.jar,activation.jar 博文链接:https://javeye.iteye.com/blog/153827
它提供了读取和管理邮件存储的能力,如收取新的邮件、删除已读邮件等。主要的实现有`POP3Store`和`IMAPStore`,分别对应POP3和IMAP协议。 4. **Transport**: 负责将邮件发送到指定的邮件服务器。通过`javax.mail....
JavaMail API是Java平台上用于发送和接收电子邮件的一个标准扩展库。它并不是Java标准库的一部分,而是Java企业版(J2EE)中的一部分。JavaMail提供了一系列用于处理电子邮件的类和接口,允许开发者在Java应用程序中...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。这个API包括了多种协议的支持,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)。在...
JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...
JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,允许开发人员发送、接收和管理电子邮件。本篇文章将深入探讨JavaMail的核心概念、关键组件以及如何使用这两个特定的jar包——`jaf-1_1_1.zip`...
javaMail javaMail javaMail javaMail javaMail javaMail javaMail
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个“JavaMail 1.6.0 Final Release”是 JavaMail 的一个重要版本,它包含了对 SMTP(简单邮件传输协议)、IMAP...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个完整JAR包包含了所有必要的组件,使得开发者能够方便地实现发送、接收、读取以及管理电子邮件。以下是JavaMail的一些关键知识点: 1. **...
JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API