首先引入maven依赖

        <dependency><groupId>com.microsoft.ews-java-api</groupId><artifactId>ews-java-api</artifactId><version>2.0</version></dependency>
package cn.kanyun.test;import java.io.File;
import java.net.URI;import org.apache.commons.io.FileUtils;import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.enumeration.property.WellKnownFolderName;
import microsoft.exchange.webservices.data.core.enumeration.service.ConflictResolutionMode;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.core.service.item.Item;
import microsoft.exchange.webservices.data.core.service.schema.EmailMessageSchema;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.property.complex.AttachmentCollection;
import microsoft.exchange.webservices.data.property.complex.FileAttachment;
import microsoft.exchange.webservices.data.search.FindItemsResults;
import microsoft.exchange.webservices.data.search.ItemView;
import microsoft.exchange.webservices.data.search.filter.SearchFilter;
import microsoft.exchange.webservices.data.property.complex.Attachment;public class MainTest4 {public static void main(String[] args) {try {scanMail("*****","*****");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 扫描邮件* * @param emailAddress* @param password* @throws Exception*/public static void scanMail(String emailAddress, String password) throws Exception {ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
//      校验邮箱地址是否正确String name = emailAddress.split("@", 2)[0];
//      初始化的新实例WebCredentials与用户名、 密码和身份验证的帐户的域。ExchangeCredentials credentials = new WebCredentials(name, password, "账户的域");
//      获取或设置用于验证与 Exchange Web Services (EWS) 的凭据service.setCredentials(credentials);
//        PropertySet detailedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.Recurrence);// 创建过滤器, 条件为邮件未读.SearchFilter filter = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
//      设置Exchange Web服务的URLservice.setUrl(new URI("https://mail.****.com/ews/Exchange.asmx"));
//        读取多少封邮件ItemView view = new ItemView(10);
//      WellKnownFolderName是枚举类,定义在用户的邮箱中使用的公共文件夹名称,如Inbox:"收件箱"文件夹 Calendar:""日历"文件夹"FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox, filter, view);System.out.println("找到:" + findResults.getItems().size() + "封邮件");
//        service.loadPropertiesForItems(findResults.getItems(), detailedPropertySet);for (Item item : findResults.getItems()) {
//            判断是否有附件if (!item.getHasAttachments()) {continue;}System.out.println("有附件的邮件!");EmailMessage message = EmailMessage.bind(service, item.getId());//            设置邮件为已读状态message.setIsRead(true);
//            将对邮件的改动提交到服务器message.update(ConflictResolutionMode.AlwaysOverwrite);System.out.println("发送人->" + message.getSender());System.out.println("标题--->" + item.getSubject());System.out.println("邮件ID->" + item.getId());
//            邮件内容,html形式System.out.println(item.getBody().toString());
//            附件列表AttachmentCollection attachments = message.getAttachments();for (Attachment attachment : attachments) {
//                附件名System.out.println(attachment.getName());
//                指示是否是内嵌附件System.out.println(attachment.getIsInline());
//                加载附件attachment.load();FileAttachment fileAttachment = (FileAttachment) attachment;
//                必须先调用Attachment.load()方法才能获取到内容byte[] content = fileAttachment.getContent();
//                将文件保存到指定位置FileUtils.writeByteArrayToFile(new File("C:\\Users\\admin\\Desktop\\Script-2.sql"), content);System.out.println("+++++++++");}}}
}

上述代码直接搜索的是收件箱中的邮件,其实还是指定目录进行获取邮件

  public static void scanMail(String emailAddress, String password) throws Exception {ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);String name = emailAddress.split("@", 2)[0];ExchangeCredentials credentials =new WebCredentials(name, password, "msxf");service.setCredentials(credentials);service.setUrl(new URI("https://mail.xxxx.com/ews/Exchange.asmx"));
//        读取多少封邮件ItemView view = new ItemView(100);
//        读取文件夹(即每页显示多少个,最终展示几页) 这里与常见的分页类似,因此此值可以设置为较大值,来避免分页,当然根据情况来定FolderView folderView = new FolderView(100);
//        搜索文件夹,第一个参数为父文件夹,这里设置为了收件箱,因为收件箱是本来就有的文件夹,同样的参考WellKnownFolderName枚举FindFoldersResults foldersResults = service.findFolders(WellKnownFolderName.Inbox, folderView);System.out.println("文件夹总数量:" + foldersResults.getTotalCount());for (Folder folder : foldersResults.getFolders()) {
//          folder.getId().getFolderName() 这一个api并不是获取文件夹名称,因为id和folerName是互斥的System.out.println("文件夹名称:" + folder.getDisplayName());FindItemsResults<Item> findItemsResults = folder.findItems(view);for (Item item : findItemsResults.getItems()) {EmailMessage message = EmailMessage.bind(service, item.getId());System.out.println("发送人->" + message.getSender());System.out.println("标题--->" + message.getSubject());System.out.println("邮件ID->" + message.getId());}}

微软 EWS API :   https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.exchange.webservices.data?view=exchange-ews-api

Java 接收OutLook 微软邮箱邮件相关推荐

  1. Java发送网易企业邮箱邮件

    Java发送网易企业邮箱邮件 /** 此方法使用smtp协议 查看网易企业邮箱各种协议的主机和端口可访问https://qiye.163.com/help/client-profile.html查看* ...

  2. java解析outlook的msg邮件(outlook-message-parser)

    如何本地没有按照outlook,那么如何打开msg附件呢 方法1:让发邮件的人通过outlook导出html或者eml等通用的格式给你 方法2:利用在线转换为eml,点击这里这种比较方便,推荐 方法3 ...

  3. mapi java_使用协议“ mapi://”从Java在Outlook中打开邮件

    我使用Windows桌面搜索开发Java应用程序,从中可以检索有关计算机文件的一些信息,例如url(System.ItemUrl).这样的URL的一个例子是 file://c:/users/auser ...

  4. Ubuntu下使用Thunderbird来接收发送iCloud邮箱邮件

    imap服务器地址:imap.mail.me.com:993 [连接方式:SSL/TLS:普通密码] smtp服务器地址:smtp.mail.me.com:25 [连接方式:STARTTLS:普通密码 ...

  5. outlook邮箱收件服务器密码,微软邮箱(hotmail+outlook):应用密码获取+STARTTLS加密...

    本文针对hotmail/outlook邮箱的登录进行详细说明 微软邮箱官网(HOTMAIL/OUTLOOK):http://outlook.com # 一.畅邮设置 # 1.1.输入邮箱 # 1.2. ...

  6. 教你如何申请注册微软邮箱【快速接收发送国外邮件】

    如果要收发国内的邮件.网易和QQ不错的选择,如果接受国外邮件,还是国际性的公司,微软的outlook据说用户体验感比较好,先申请着,以备不时之需! 申请地址:https://outlook.live. ...

  7. 关于Outlook删除原邮箱邮件的解决办法

    最近需要用邮件多一些,就配置了一下Outlook客户端,配置的时候一般直接点下一步,自动配置就可以了,我也试过手动配置,解决老是出问题.别说,Outlook用起来还是相当方便的,不用每次都打开浏览器输 ...

  8. outlook邮箱邮件大小限制_outlook邮箱附件大小限制怎么办_outlook超出邮箱附件大小限制如何处理-win7之家...

    我们在使用电脑办公时,常常需要进行邮件的接收和发送,这时有些用户就会选择通过outlook邮箱来完成,但是最近有的用户在发送邮件的时候却出现了outlook邮箱附件大小限制的情况,那么outlook邮 ...

  9. java程序向指定邮箱发邮件

    在正式开始本文内容之前需要了解一些基础性的东西如下: SMTP协议(发送邮件): 用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的. 因而 ...

  10. Foxmail添加微软最新outlook.com邮箱解决方案

    Foxmail添加微软最新outlook.com邮箱解决方案 参考文章: (1)Foxmail添加微软最新outlook.com邮箱解决方案 (2)https://www.cnblogs.com/iy ...

最新文章

  1. untitled与前端——初学
  2. GitHub 上有哪些适合新手跟进的优质项目?(附地址)
  3. linux安装node js的二进制文件安装方式的注意事项
  4. 【动态树】[BZOJ2002] Bounce 弹飞绵羊
  5. 学破解 一 PE格式之MS-DOS MZ header
  6. 大众mpv_一汽-大众全新MPV车型国内伪装路试曝光,没有侧滑门设计
  7. Java【全排列 算法 模板】
  8. 缩影和掠影_普查员的“酸苦甜” 社区人口普查工作掠影
  9. java 数据结构详解,数组,集合,HashMap
  10. centos系统云服务器,Centos系统怎么进云服务器
  11. 当不同公司的产品经理在一块聊天,会聊什么?
  12. php 错误提示模板,php 关闭错误提示方法总结与性能分析
  13. 输出呈三角形的杨辉三角形(C语言)
  14. cocos2d-x 是男人就下100层 附源码
  15. 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 完结篇 由金手指想到的...
  16. 解决对象转json字符串时对象属性不按对象属性顺序的问题
  17. 利用AD13设计PCB的问题总结21-30
  18. 黑客组织“洋葱狗”潜伏3年终曝光 定期偷袭能源及交通行业
  19. android 带箭头的按钮,用Dialog创建带箭头的对话框
  20. 增长的旋律——AARRR模式思考(二)

热门文章

  1. 用python函数画德国国旗代码_给我一面国旗 python帮你实现
  2. 记一次学习爬取豆瓣数据于Excel表的爬虫
  3. 神经网络,英文字母识别
  4. 结合量价持仓分析的股指期货日内交易策略
  5. wx-jssdk,IOS调用API,config通过了,但是报错[ the permission value is offline verifying ]
  6. vscode html修改默认浏览器,vscode修改默认浏览器的方法
  7. 全网通工业无线路由器多网口工业路由器
  8. English trip Spoken English Word List(updating...)
  9. 串口通信根据波特率计算定时器初值
  10. 2019南京“无房证明”办理