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

    xiaoxiao2021-12-13  31

    使用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。
    转载请注明原文地址: https://ju.6miu.com/read-950080.html

    最新回复(0)