java mail 学习笔记3——接收电子邮件

使用java mail来收取邮件,较之发送邮件稍显复杂。如下图:

java mail 学习笔记3——接收电子邮件_第1张图片


具体步骤如下:

1.从session对象中获取store对象。

store是一个抽象类,它模拟一个消息存储和访问协议,用于存储和检索消息。子类提供实际的实现。

  Properties props=new Properties();
		props.setProperty("mail.transport.protocol", "pop3");
		props.setProperty("mail.host", "pop3.sina.com");
		Session session=Session.getInstance(props, new Authenticator(){

			protected PasswordAuthentication getPasswordAuthentication()
			{
				return new PasswordAuthentication("******@sina.com","******");
			}
		}
		);
		Store store=session.getStore("pop3");
		store.connect("pop3.sina.com", "******@sina.com", "******");

2.调用store的getFolder方法,获取邮箱中某个邮件夹的Folder对象。

当获得此文件夹时,它是关闭的,可以对关闭的文件夹进行一些操作,如删除或重命名,但无法获得关闭文件夹中的消息。

  Folder folder=store.getFolder("INBOX");
		if(folder==null){
			System.out.println("No Inbox");
			System.exit(1);
		}
		folder.open(Folder.READ_ONLY);
注意:Folder类中定义了两个常量READ_ONLY,READ_WRITE来表示Folder的操作权限。

3.获取邮件:

Message类提供了很多操作各个消息的方法。它又获得消息各个首部字段、获得消息内容等的方法。现在,只要进行最简单的操作,即调用writeTo()在System.out显示每个消息。

操作完这些消息后,记得关闭文件夹、关闭消息存储器。


完整的代码如下:


import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;


public class ReciveMail {

	public static void main(String[] args) throws Exception{
		
			Properties props=new Properties();
			props.setProperty("mail.transport.protocol", "pop3");
			props.setProperty("mail.host", "pop3.sina.com");
			Session session=Session.getInstance(props, new Authenticator(){

				protected PasswordAuthentication getPasswordAuthentication()
				{
					return new PasswordAuthentication("******@sina.com","******");
				}
			}
					);
			Store store=session.getStore("pop3");
			store.connect("pop3.sina.com", "******@sina.com", "******");
			Folder folder=store.getFolder("INBOX");
			if(folder==null){
				System.out.println("No Inbox");
				System.exit(1);
			}
			folder.open(Folder.READ_ONLY);
			Message[] ms=folder.getMessages();
			for(int i=0;i<ms.length;i++){
				System.out.println("----------Message "+(i+1)+" begin-----------------");
				System.out.println("来自:"+ms[i].getFrom());
				ms[i].writeTo(System.out);
				System.out.println("----------Message "+(i+1)+"end -----------------");
			}
			folder.close(false);//关闭连接,但不删除服务器上的消息。
			store.close();
	}
}
如果想将上面程序移植到IMAP,唯一要做的就是将mail.transport.protocol的值换成imap。

你可能感兴趣的:(javamail,javamail,javamail,收取电子邮件)