最新的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发送电子邮件,程序和jar包都在里面,使用方法也有,程序可直接使用,直接改成自己的邮箱和密码就能发送了,解决了很多人java发送邮件不成功的烦恼
java发送电子邮件 ,里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的.里面包含了发邮件的源码.
一个简单的电子邮件系统,供初学者学习使用
java版电子邮件系统,附带程序说明 java版电子邮件系统,附带程序说明 java版电子邮件系统,附带程序说明
论文参考,JAVA基于JAVA的电子邮件接收系统论文
JAVA+发送电子邮件源代码学习
java swing截图发送电子邮件
java 发送电子邮件java 发送电子邮件java 发送电子邮件java 发送电子邮件java 发送电子邮件java 发送电子邮件java 发送电子邮件java 发送电子邮件
javaMail实现java发送电子邮件代码
用java发送电子邮件的最简单实例,包括jar
基于JAVA的电子邮件系统 下载学习与参考!
用java实现的电子邮件客户端,有源代码有可运行程序,任君选择。
java发送电子邮件2个实例和相应的jar包,
基于java的邮件收发Java源码
java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...
这是一个用Java写的简单电子邮件客户端的Demo,可实现邮件的书写与收发,有可视化界面。涉及到了SMTP协议、POP3协议。
在这篇博客中,我们将使用Java语言来设计和实现一个基本的电子邮件客户端应用,具有发送和接收电子邮件的功能。 开发环境 在开始之前,确保你的开发环境中安装了以下工具和技术: Java Development Kit (JDK): ...
java实现发送电子邮件源码,可以设置抄送、密送联系人;可以发送超级链接和多个附件