本程序基于Sun公司提供的javamail1.1.4,实现了简单的邮件接收功能,对附件名的的乱码问题进行了处理。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Security;
import java.util.Date;
import java.util.Enumeration;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
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.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class Getmail {
private Properties props;
private String dir = "D:" + File.separator +"Mail" + File.separator;
boolean ssl;
public Getmail(){
props = new Properties();
this.setProps();
}
public static void main(String args[]) throws MessagingException,
IOException {
Getmail mail = new Getmail();
mail.parseMail();
}
public void parseMail(){
try {
Session session = Session.getInstance(props);
Store store = session.getStore("pop3");
store.connect("",""); //在此处设置用户名和密码
Folder folder = store.getFolder("INBOX");
System.out.println(folder.exists());
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
for(Message message:messages){
System.out.println("主题:" + this.getSubject(message));
System.out.println("发送时间:" + this.getSentTime(message));
this.parseContent((Multipart)message.getContent());
}
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 设置属性
*/
private void setProps(){
if(ssl){
this.handleSSL(props);
}
props.setProperty("mail.store.protocol", "pop3");
props.setProperty("mail.pop3.host", "pop.163.com");
// props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", "110");
props.setProperty("mail.pop3.socketFactory.port", "110");
}
private String getSubject(Message message) throws MessagingException{
return message.getSubject();
}
private Date getSentTime(Message message) throws MessagingException{
return message.getSentDate();
}
/**
* @param props
*/
private void handleSSL(Properties props){
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", "995");
props.setProperty("mail.pop3.socketFactory.port", "995");
props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.imap.socketFactory.fallback", "false");
props.setProperty("mail.imap.port", "993");
props.setProperty("mail.imap.socketFactory.port", "993");
}
/**
* 处理邮件内容
* @param multipart
*/
private void parseContent(Multipart multipart){
try {
for(int i = 0;i<multipart.getCount();i++){
BodyPart message = multipart.getBodyPart(i);
if((message.isMimeType("text/html"))||(message.isMimeType("text/plain"))){
System.out.println("邮件内容:" + message.getContent());
}
if(message.isMimeType("multipart/*")){
Multipart msg = (Multipart)message.getContent();
parseContent(msg);
}
if(message.isMimeType("application/octet-stream")){
String disposition = message.getDisposition();
if(disposition == null || disposition.equalsIgnoreCase(Part.ATTACHMENT)){
saveToFile(message);
}
}
}
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 存到文件中
* @param message
*/
private void saveToFile(BodyPart message){
InputStream is = null;
OutputStream os = null;
File file = new File(dir);
if(!file.exists()&&!file.isDirectory()){
file.mkdirs();
}
try {
String fileName = message.getFileName();
fileName = MimeUtility.decodeText(fileName); //处理附件名乱码问题
System.out.println(fileName);
File output = new File(dir + fileName);
is = message.getInputStream();
os = new FileOutputStream(output);
byte[] bytes = new byte[1024];
int len = 0;
while ((len=is.read(bytes)) != -1 ) {
os.write(bytes, 0, len);
}
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
os.flush();
is.close();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
以上就是关于"JAVA100例之实例48 使用JavaMail接收邮件"的主要内容,通过学习和实践这个实例,开发者将能够熟练地使用JavaMail API来实现邮件的接收功能,这对于构建自动化邮件系统或者处理邮件相关的业务需求非常有...
我们可以使用 Transport 对象来发送邮件, Transport 对象是 JavaMail 库中的一个核心对象,用于发送和接收电子邮件。我们可以使用 Transport 对象的 send 方法来发送邮件。 在发送邮件之前,我们需要设置邮件...
在这个资源中,我们将探讨如何使用 JavaMail 实现邮件的发送、接收、查看邮件数量以及未读邮件的标记为已读。 首先,让我们从发送邮件开始。在 JavaMail 中,你需要创建一个 `Session` 对象来配置邮件服务器的连接...
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
JavaMail是一种广泛使用的Java库,用于处理电子邮件的发送和接收。在Java应用程序中实现邮件接收功能,JavaMail是必不可少的工具。本教程将详细介绍如何利用JavaMail API来接收邮件。 首先,我们需要理解JavaMail的...
JavaMail还支持更复杂的功能,如HTML邮件、多部分邮件、使用IMAP/POP3接收邮件等。开发者可以根据具体需求选择相应的API来实现。通过阅读JavaMail的官方文档和参考示例代码,可以进一步了解和掌握这个强大的工具。
在给定的标题和描述中,我们讨论的是如何使用JavaMail API来接收邮件。 首先,我们需要了解JavaMail的核心类`MimeMessage`,它是邮件消息的容器,可以存储邮件的所有信息,包括发件人、收件人、主题、正文以及附件...
JavaMail是一个开源的API,它提供了在Java环境中处理邮件的功能,包括发送、接收和管理电子邮件。在这个案例中,"LouisJavaMail-master"是一个项目仓库,包含了使用JavaMail在Android上发送邮件的示例代码。 首先,...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。它支持多种协议,如POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol),这两种协议常用于从邮件服务器...
它支持多种协议,包括POP3、IMAP和SMTP,这些协议分别用于接收、检索和发送邮件。在使用JavaMail时,了解如何进行加密和非加密通信对于确保数据安全至关重要。 1. **POP3(Post Office Protocol version 3)**: -...
接下来,让我们深入探讨如何使用 JavaMail 发送和接收邮件。 1. **发送邮件**: - 配置 JavaMail Session:这通常涉及到设置 SMTP 服务器的属性,如主机名、端口号、用户名和密码。 - 创建 MimeMessage 对象:这...
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...
NULL 博文链接:https://zhaoshijie.iteye.com/blog/804788
JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...
javamail接收邮件例子,我稍微改动了一下,有些错误和异常抛出了
后端使用JavaMail API处理邮件的发送和接收请求,同时与数据库交互存储和检索邮件信息。 五、文档和报告 - 开题报告:详细阐述了项目的背景、意义、目标、技术路线和预期成果,为项目的开展提供指导。 - 论文:详尽...
JavaMail是一个用于在Java应用程序中处理邮件的API,它提供了一种标准的方式来发送和接收电子邮件。本篇将深入探讨如何使用JavaMail实现发送邮件,以及相关的源码分析。 首先,我们需要了解JavaMail的基本组件。`...
很好的邮件处理代码,1.5版本,作为build path放在eclipse里面,就可以用啦! oracle官方推的,很好!jdk1.6版本以上用起来很方便。