您的位置:首页 > 编程语言 > Java开发

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

2016-11-30 14:59 369 查看
使用Java mail来收取邮件,较之发送邮件稍显复杂。如下图:



具体步骤如下:

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

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

[java] view
plain copy

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对象。

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

[java] view
plain copy

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显示每个消息。

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

完整的代码如下:

[java] view
plain copy

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: