Java 接收OutLook 微软邮箱邮件
首先引入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 微软邮箱邮件相关推荐
- Java发送网易企业邮箱邮件
Java发送网易企业邮箱邮件 /** 此方法使用smtp协议 查看网易企业邮箱各种协议的主机和端口可访问https://qiye.163.com/help/client-profile.html查看* ...
- java解析outlook的msg邮件(outlook-message-parser)
如何本地没有按照outlook,那么如何打开msg附件呢 方法1:让发邮件的人通过outlook导出html或者eml等通用的格式给你 方法2:利用在线转换为eml,点击这里这种比较方便,推荐 方法3 ...
- mapi java_使用协议“ mapi://”从Java在Outlook中打开邮件
我使用Windows桌面搜索开发Java应用程序,从中可以检索有关计算机文件的一些信息,例如url(System.ItemUrl).这样的URL的一个例子是 file://c:/users/auser ...
- Ubuntu下使用Thunderbird来接收发送iCloud邮箱邮件
imap服务器地址:imap.mail.me.com:993 [连接方式:SSL/TLS:普通密码] smtp服务器地址:smtp.mail.me.com:25 [连接方式:STARTTLS:普通密码 ...
- outlook邮箱收件服务器密码,微软邮箱(hotmail+outlook):应用密码获取+STARTTLS加密...
本文针对hotmail/outlook邮箱的登录进行详细说明 微软邮箱官网(HOTMAIL/OUTLOOK):http://outlook.com # 一.畅邮设置 # 1.1.输入邮箱 # 1.2. ...
- 教你如何申请注册微软邮箱【快速接收发送国外邮件】
如果要收发国内的邮件.网易和QQ不错的选择,如果接受国外邮件,还是国际性的公司,微软的outlook据说用户体验感比较好,先申请着,以备不时之需! 申请地址:https://outlook.live. ...
- 关于Outlook删除原邮箱邮件的解决办法
最近需要用邮件多一些,就配置了一下Outlook客户端,配置的时候一般直接点下一步,自动配置就可以了,我也试过手动配置,解决老是出问题.别说,Outlook用起来还是相当方便的,不用每次都打开浏览器输 ...
- outlook邮箱邮件大小限制_outlook邮箱附件大小限制怎么办_outlook超出邮箱附件大小限制如何处理-win7之家...
我们在使用电脑办公时,常常需要进行邮件的接收和发送,这时有些用户就会选择通过outlook邮箱来完成,但是最近有的用户在发送邮件的时候却出现了outlook邮箱附件大小限制的情况,那么outlook邮 ...
- java程序向指定邮箱发邮件
在正式开始本文内容之前需要了解一些基础性的东西如下: SMTP协议(发送邮件): 用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的. 因而 ...
- Foxmail添加微软最新outlook.com邮箱解决方案
Foxmail添加微软最新outlook.com邮箱解决方案 参考文章: (1)Foxmail添加微软最新outlook.com邮箱解决方案 (2)https://www.cnblogs.com/iy ...
最新文章
- untitled与前端——初学
- GitHub 上有哪些适合新手跟进的优质项目?(附地址)
- linux安装node js的二进制文件安装方式的注意事项
- 【动态树】[BZOJ2002] Bounce 弹飞绵羊
- 学破解 一 PE格式之MS-DOS MZ header
- 大众mpv_一汽-大众全新MPV车型国内伪装路试曝光,没有侧滑门设计
- Java【全排列 算法 模板】
- 缩影和掠影_普查员的“酸苦甜” 社区人口普查工作掠影
- java 数据结构详解,数组,集合,HashMap
- centos系统云服务器,Centos系统怎么进云服务器
- 当不同公司的产品经理在一块聊天,会聊什么?
- php 错误提示模板,php 关闭错误提示方法总结与性能分析
- 输出呈三角形的杨辉三角形(C语言)
- cocos2d-x 是男人就下100层 附源码
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 完结篇 由金手指想到的...
- 解决对象转json字符串时对象属性不按对象属性顺序的问题
- 利用AD13设计PCB的问题总结21-30
- 黑客组织“洋葱狗”潜伏3年终曝光 定期偷袭能源及交通行业
- android 带箭头的按钮,用Dialog创建带箭头的对话框
- 增长的旋律——AARRR模式思考(二)
热门文章
- 用python函数画德国国旗代码_给我一面国旗 python帮你实现
- 记一次学习爬取豆瓣数据于Excel表的爬虫
- 神经网络,英文字母识别
- 结合量价持仓分析的股指期货日内交易策略
- wx-jssdk,IOS调用API,config通过了,但是报错[ the permission value is offline verifying ]
- vscode html修改默认浏览器,vscode修改默认浏览器的方法
- 全网通工业无线路由器多网口工业路由器
- English trip Spoken English Word List(updating...)
- 串口通信根据波特率计算定时器初值
- 2019南京“无房证明”办理