/**
* 简单的接收邮件例子
*
* @author liuyan
*
*/
public class ReciveMail {
private final static String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
private String account;
private String password;
private String pop3Host;
private int pop3Port;
private Store store;
//省略setter、getter
public Store getStore() throws MessagingException {
if (this.store == null || !this.store.isConnected()) {
Properties properties = new Properties();
// gmail需要特殊处理SSL验证
if (isGmail()) {
properties.setProperty("mail.pop3.socketFactory.class",
SSL_FACTORY);
}
Session session = Session.getDefaultInstance(properties);
// 使用pop3协议接收邮件
URLName url = new URLName("pop3", getPop3Host(), getPop3Port(),
null, getAccount(), getPassword());
// 获得邮件的存储对象
Store store = session.getStore(url);
// 连接上
store.connect();
this.store = store;
}
return store;
}
public ReciveMail() {
}
/**
* 获得消息
*
* @throws MessagingException
* @throws IOException
*/
public void getMessages() throws MessagingException, IOException {
// 获取INBOX文件夹,收件箱内
Folder inbox = getStore().getFolder("INBOX");
// 打开可读写的文件夹
inbox.open(Folder.READ_WRITE);
// 获得邮件实体对象数组
Message[] messages = inbox.getMessages();
// 遍历邮件
for (int i = 0; i < messages.length; i++) {
int j = i + 1;
System.out.println("第【" + j + "】封邮件");
// 邮件文本内容
System.out
.println(getMailContent(messages[i], new StringBuffer(""))
.toString());
// 获取邮件的附件
getFiles(messages[i]);
System.out
.println("===============================================");
}
}
/**
* 邮件的内容
*
* @param part
* @param result
* @return
* @throws IOException
* @throws MessagingException
* @throws MessagingException
* @throws IOException
*/
private StringBuffer getMailContent(Part part, StringBuffer result)
throws MessagingException, IOException {
if (part.isMimeType("multipart/*")) {// 邮件是复杂类型的
Multipart mp = (Multipart) part.getContent();
// 邮件的整体部分body数量
int sum = mp.getCount();
// 第一部分是text/plain
// 第二部分是text/html
if (sum > 1)
sum = 1;
for (int i = 0; i < sum; i++) {
BodyPart bp = mp.getBodyPart(i);
// 递归
getMailContent(bp, result);
}
} else if (part.isMimeType("text/*")) {// 邮件是纯文本类型的
try {
String str = (String) part.getContent();
result.append(str);
} catch (IOException e) {
// gb2312需要异常处理
InputStream is = part.getInputStream();
byte[] b = new byte[1024];
//因为gb2312的内容需要在异常中特殊处理一下,所以直接从字节数组中获得String内容
is.read(b);
String newStr = new String(b);
result.append(newStr);
// e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
|
相关推荐
### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...
### JavaEE5学习笔记05-EJB之会话Bean总结 #### EJB(Enterprise JavaBeans)简介 EJB(Enterprise JavaBeans)是Java EE平台的一部分,用于开发和部署可重用的服务组件。EJB规范定义了如何编写、部署以及管理企业...
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...
### JavaEE5学习笔记12-JSF集成AJAX使用经验总结 #### 1. JSF (JavaServer Faces) 概览 JavaServer Faces (JSF) 是 Java EE 的一个重要组成部分,它提供了一种构建用户界面的组件框架。JSF 允许开发者创建可重用的...
### JavaEE5学习笔记02-JNDI与RMI #### JNDI(Java Naming and Directory Interface) JNDI是Java平台中用于访问命名和目录服务的API,它提供了一种标准的方式,使得应用程序可以查找并引用网络上的远程对象。JNDI...
### JavaEE5学习笔记09-将EJB发布成WebService总结 #### 一、EJB与WebService概述 在Java EE 5(Java Platform, Enterprise Edition)中,企业级应用程序的开发变得更为简单和灵活。EJB(Enterprise JavaBeans)...
### JavaEE5学习笔记11-JSF转换器验证器使用经验总结 在JavaEE5的学习过程中,JSF(JavaServer Faces)作为一款重要的框架被广泛应用于企业级应用开发。本篇笔记将重点介绍JSF中的两个核心概念:转换器(Converter)...
javaee-api-8.0-javadoc.jar,这是javaee1.8api的jar包,解压后可用javadoc2chm制作成chm帮助文档。
JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源...
JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-...
java javaee-api-6.0-5
JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-...
JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-...
JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源...
javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-...
JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-...
在这个“javaee5-doc-api”压缩包中,包含的是Java EE 5的官方API文档,对于开发者来说是一份非常重要的参考资料。 **1. Servlet API** Servlet是Java EE中处理HTTP请求的核心组件。在Java EE 5中,Servlet API升级...