最新的JavaMail 1.3.1增强了在国际化字符集的处理,很多原来的关于中文的问题都可以迎刃而解,下面是一个例子用来收取邮箱中的所有邮件,包括内容附件等。经过试验:标题,内容,发件人名,中文附件都可以正确处理!大家测试的时候请下载最新的JavaMail包以及Java Activation Framework(JAF,activation.jar),然后需要修改一下在main方法中的邮箱地址以及帐号,代码如下:
/*
Created on 2004-7-5
*/
package demo;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.mail.BodyPart;
import javax.mail.FetchProfile;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.UIDFolder;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;
import com.sun.mail.pop3.POP3Folder;
/**
* 邮件接收演示例子
@author liudong
*/
public class MailFetcher {
/**
使用默认的110端口收取邮件
* @param host
@param user
* @param password
@return
* @throws IOException
* @throws MessagingException
*/
public static void listMails(String host,String user,String password)
throws IOException, MessagingException {
listMails(host,110,user,password);
}
/**
接收指定帐号的所有邮件概要信息(不包括内容和附件)
@param account
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public static void listMails(String host,int port,String user,String password) throws IOException, MessagingException {
//pop3必须小写
URLName url = new URLName("pop3", host, port, "", user, password);
Session session = Session.getDefaultInstance(System.getProperties(),null);
Store store = session.getStore(url);
POP3Folder inbox = null;
try {
store.connect();
inbox = (POP3Folder) store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
FetchProfile profile = new FetchProfile();
profile.add(UIDFolder.FetchProfileItem.UID);
profile.add(FetchProfile.Item.ENVELOPE);
Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
for (int i = 0; i < messages.length; i++) {
//邮件发送者
String from = decodeText(messages[i].getFrom()[0].toString());
InternetAddress ia = new InternetAddress(from);
System.out.println("FROM:"+ia.getPersonal());
//邮件发送者地址
System.out.println("FROM_ADDR:"+ia.getAddress());
//邮件标题
System.out.println("TITLE:"+messages[i].getSubject());
//邮件的唯一标识信息
System.out.println("UID:"+inbox.getUID(messages[i]));
//邮件大小
System.out.println("SIZE:"+messages[i].getSize());
//邮件发送时间
System.out.println("DATE:"+messages[i].getSentDate());
//读取邮件内容
Object content = messages[i].getContent();
if(content instanceof String)
System.out.println("CONTENT:"+content);
Else
if(content instanceof Multipart)
dumpMultipart((Multipart)content);
}
} finally {
try{
inbox.close(false);
}catch(Exception e){}
try{
store.close();
}catch(Exception e){}
}
}
protected static String decodeText(String text) throws UnsupportedEncodingException{
if(text==null)
return null;
if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;
}
protected static void dumpMultipart(Multipart mmp) throws MessagingException, IOException{
//System.out.println("ContentType:"+mmp.getContentType());
for(int pc=0;pc<mmp.getCount();pc++){
BodyPart bp = mmp.getBodyPart(pc);
Object content = bp.getContent();
if(content instanceof String){
System.out.println("CONTENT:"+content);
}
else
if(content instanceof Multipart)
dumpMultipart((Multipart)content);
else
if(content instanceof InputStream)
System.out.println("FileName:"+decodeText(bp.getFileName()));
}
}
public static void main(String[] args) throws IOException, MessagingException {
listMails("邮件服务器地址","帐号","密码");
}
}
分享到:
相关推荐
java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...
Java电子邮件系统是一个基于Java技术构建的Web应用程序,主要用于学习和理解电子邮件系统的实现原理。这个系统可以让初学者了解如何在互联网上发送和接收电子邮件,以及如何处理邮件附件等基本功能。以下是一些关于...
Java电子邮件系统是基于Java编程语言开发的用于发送、接收和管理邮件的应用程序。这个系统通常利用JavaMail API来实现SMTP(简单邮件传输协议)和POP3(邮局协议)等邮件服务标准,使得用户能够通过编程接口进行邮件...
JavaMail API是Java中用于处理电子邮件的标准库,包括了发送邮件、接收邮件等功能。要发送普通邮件,你需要设置SMTP服务器地址、端口、用户名和密码,然后创建`Message`对象并设置发件人、收件人、主题和正文,最后...
Java发送电子邮件是一个常见的任务,尤其在自动化通知、订阅服务或者数据传输等场景中。这个话题主要涉及JavaMail API和JavaBeans Activation Framework (JAF)。JavaMail API是用于处理电子邮件的Java库,而JAF则...
Java版电子邮件系统是一种基于Java编程语言实现的电子邮件应用程序,它允许用户发送、接收、存储和管理电子邮件。在本文中,我们将深入探讨Java在构建电子邮件系统中的应用,包括核心技术、架构设计以及实现邮件功能...
"基于Java-Mail的电子邮件收发系统毕业设计" 本文主要介绍了基于Java-Mail的电子邮件收发系统的设计和实现,涵盖了系统的需求分析、总体设计、实现细节等方面。 Java-Mail简介 Java-Mail是Java平台下的邮件处理...
Java发送电子邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释如何使用Java来发送邮件,并提供相关的知识点。 首先,Java通过JavaMail API提供了发送邮件的功能。JavaMail ...
在本篇论文中,我们将深入探讨如何利用Java技术构建一个基于Java的电子邮件接收系统。Java是一种广泛应用于开发各种软件和网络应用的高级编程语言,其跨平台性、丰富的类库和强大的网络支持使得它成为构建电子邮件...
Java 与电子邮件技术是开发人员在构建应用程序时经常会用到的一种通信方式,特别是在需要发送通知、验证用户或提供客户服务的场景下。Java 提供了JavaMail API 这个强大的库来处理电子邮件的发送和接收。这篇博文将...
在Java编程语言中,发送电子邮件是一项常见的任务,尤其在自动化通知、系统消息传递或客户服务场景中。本资源提供了关于使用Java发送电子邮件的源代码学习资料,让我们深入探讨这个主题。 首先,我们需要理解...
Java简单电子邮件客户端是一个基于Java编程语言开发的轻量级应用,它允许用户通过可视化的界面发送和接收电子邮件。这个Demo项目展示了如何利用JavaMail API来实现SMTP(Simple Mail Transfer Protocol)和POP3...
电子邮件客户端的实现是Java编程中的一个重要应用场景,它允许用户通过编程方式发送、接收和管理电子邮件。本项目提供了完整的源代码和可运行程序,方便开发者学习和使用。 在Java中实现电子邮件客户端,主要涉及到...
本篇文章将深入探讨如何在Java Swing应用中实现截图并将其通过电子邮件发送的功能。 首先,我们需要了解Java Swing的基本组件和事件处理。`Robot`类是Java AWT库的一部分,可以用来模拟用户的键盘和鼠标操作,包括...
Java邮件系统是利用Java编程语言实现的用于发送、接收、管理电子邮件的应用程序。这个系统通常基于JavaMail API,一个开放源代码的Java库,它提供了与SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息...
首先,JavaMail API是Java中用于处理电子邮件的主要库。它提供了丰富的API,可以用来创建、发送和读取邮件。要使用JavaMail,我们需要引入相关的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ...
总的来说,创建一个Java电子邮件客户端需要理解邮件传输协议的工作原理,并熟悉使用JavaMail和Apache Commons Email库提供的API。通过适当的配置和编程,我们可以构建出功能完备的电子邮件应用程序,满足日常沟通...
基于Java_Mail的电子邮件收发系统 基于Java_Mail的电子邮件收发系统是指使用Java_Mail API来实现电子邮件的发送和接收的系统。 Java_Mail是Java平台上的一种邮件处理API,它提供了一个统一的接口来访问各种类型的...
这个"java收发邮件完整版"项目提供了一个完整的Java邮件发送和接收的解决方案,确保用户可以顺利地通过编程方式处理电子邮件。在这个压缩包中,可能包含了一个或多个Java源代码文件,例如"71112303梁洁"和"71112418...