当前位置: 首页 > news >正文

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("接收完毕!");
        }
}

 

相关文章:

  • 缓存遇到的数据过滤与分页问题
  • 通过libVirt抓取kvm虚拟机监控指标数据
  • Eclipse+Pydev
  • TTL和RS232之间的详细对比
  • NSMutableArray崩溃信息
  • 艰困之道中学到的经验教训
  • 【JAVA秒会技术之随意切换数据库】Spring如何高效的配置多套数据源
  • 国外的搜索引擎,能查到好多资料
  • 基于nginx的负载均衡概述与实现
  • 总结2016,规划2017
  • GreenOpenPaint的实现(二)打开显示图片
  • CSS命名规范:
  • 桌面开发者的界面故事,该醒醒了
  • yii2中session跨域名的问题
  • MVC,MVP,MVVM
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Android系统模拟器绘制实现概述
  • Bootstrap JS插件Alert源码分析
  • bootstrap创建登录注册页面
  • CSS魔法堂:Absolute Positioning就这个样
  • Electron入门介绍
  • Flex布局到底解决了什么问题
  • js操作时间(持续更新)
  • mysql常用命令汇总
  • MySQL-事务管理(基础)
  • 设计模式走一遍---观察者模式
  • 使用parted解决大于2T的磁盘分区
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (十)c52学习之旅-定时器实验
  • (四) Graphivz 颜色选择
  • (图)IntelliTrace Tools 跟踪云端程序
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net 生成二级域名
  • .Net多线程总结
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Autowired注解的实现原理
  • @WebServiceClient注解,wsdlLocation 可配置
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [Android Studio 权威教程]断点调试和高级调试
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C/C++]数据结构 循环队列
  • [C++]——带你学习类和对象
  • [HCIE] IPSec-VPN (手工模式)