zoukankan      html  css  js  c++  java
  • Android javaMail使用imap协议接收邮件

    在这里说明一下,pop3和imap协议都是接收邮件的,但是他们还是有很多不同的。 
    IMAP和POP有什么区别? 
    POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。 
    同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。

    上代码:

    package cn.com;
    import java.security.Security;
    import java.util.Date;
    import java.util.Properties;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.NoSuchProviderException;
    import javax.mail.Session;
    import com.sun.mail.imap.IMAPFolder;
    import com.sun.mail.imap.IMAPStore;
    public class ImapFetchMail {
         public static void main(String[] args) {
                String host = "imap.qq.com";
                int port = 993;
                String username = "316301857@qq.com";
                String password = "dengzhiyuanaiyuer";
                final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
                Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    /* Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
                                这里有一个错我是这么解决的(Windows -> Preferences,Java/Compiler/Errors/Warnings->
                Deprecated and restricted API, Forbidden reference (access rules),原始设定为Error修改为Warning)*/
                Properties props = System.getProperties();  
                props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);  
                props.setProperty("mail.imap.socketFactory.port","993");  
                props.setProperty("mail.store.protocol","imap");    
                props.setProperty("mail.imap.host", host);    
                props.setProperty("mail.imap.port", "993");    
                props.setProperty("mail.imap.auth.login.disable", "true"); 
                Session session = Session.getDefaultInstance(props,null);  
                session.setDebug(false);  
                IMAPFolder folder= null;
                IMAPStore store=null;
                try {   
                    store=(IMAPStore)session.getStore("imap");  // 使用imap会话机制,连接服务器
                    store.connect(host,port,username,password);
                    folder=(IMAPFolder)store.getFolder("Sent Messages"); //收件箱 
    
                    Folder defaultFolder = store.getDefaultFolder(); 
                    Folder[] allFolder = defaultFolder.list();
                  for (int i = 0; i < allFolder.length; i++) {
                        System.out.println("这个是服务器中的文件夹="+allFolder[i].getFullName());
                    }
                      // 使用只读方式打开收件箱 
                    folder.open(Folder.READ_WRITE);
                    int size = folder.getMessageCount();
                    System.out.println("这里是打印的条数=="+size);
                    Message[] mess=folder.getMessages();
                  //  Message message = folder.getMessage(size);
                    for (int i = 0; i <5; i++) {
                        String from = mess[i].getFrom()[0].toString();
                        String subject = mess[i].getSubject();
                        Date date = mess[i].getSentDate();
                        System.out.println("From: " + from);
                        System.out.println("Subject: " + subject);
                        System.out.println("Date: " + date);
                    }
                   /* String from = message.getFrom()[0].toString();
                    String subject = message.getSubject();
                    Date date = message.getSentDate();*/
                   /* BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); */ 
    
                } catch (NoSuchProviderException e) {
                    e.printStackTrace();
                } catch (MessagingException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (folder != null) {
                            folder.close(false);
                        }
                        if (store != null) {
                            store.close();
                        }
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println("接收完毕!");
            }
    }
  • 相关阅读:
    AI工程师职业规划和学习路线完整版
    Python基础面试题库
    Python运行的17个时新手常见错误小结
    一文总结学习 Python 的 14 张思维导图
    NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
    超过 150 个最佳机器学习,NLP 和 Python教程
    任泽平:95页PPT分析2018(经济、房价、政策)
    为什么量化交易中稳定盈利是第一要义
    使用tushare获取股票实时分笔数据延时有多大
    5行代码实现1秒内获取一次所有股票的实时分笔数据
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6295588.html
Copyright © 2011-2022 走看看