问题:

公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeout,需要改用EWS(Exchange Web Service)协议。

参考 : http://blog.csdn.net/yangcheng33/article/details/55049629

需要导入此JAR包 : ews-java-api-2.0.jar

import java.net.URI
import java.net.URISyntaxException import microsoft.exchange.webservices.data.core.*
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion
import microsoft.exchange.webservices.data.core.enumeration.property.*
import microsoft.exchange.webservices.data.core.enumeration.service.ConflictResolutionMode
import microsoft.exchange.webservices.data.core.service.item.Item
import microsoft.exchange.webservices.data.core.service.schema.AppointmentSchema
import microsoft.exchange.webservices.data.credential.*
import microsoft.exchange.webservices.data.property.complex.MessageBody
import microsoft.exchange.webservices.data.search.* String contentSubject = "Regarding area"
String emailAddress = "auto.tester@zhang.com"
String password = "Autotest202010"
int maxEmailsGet = 5
String queryString = "" ExchangeService service = getService(emailAddress, password); FindItemsResults<Item> findItems = getEmails(maxEmailsGet, queryString, service); // 迭代 邮件内容
for (Item mail : findItems) {
String subject = mail.getSubject()
//log.info "Email subject : "+subject MessageBody messageBody = mail.getBody()
messageBody.setBodyType(BodyType.Text) def hasAttachment = mail.getHasAttachments()
//log.info "Has attatchment ? :"+hasAttachment if(subject.contains(contentSubject)&&hasAttachment.equals(true)&&mail.getIsRead().equals(false)){
assert true,"Check email pass" //置email为已读,并且同步到邮件服务器,这样无论以什么方式查看邮件,邮件都是已读状态
mail.setIsRead(true)
mail.update(ConflictResolutionMode.AlwaysOverwrite)
break
} else if(maxEmailsGet==1){
assert false,"Check email fail"
} maxEmailsGet--
} // 读取 Inbox下的邮件
public static FindItemsResults<Item> getEmails(int maxEmailsGet, String queryString, ExchangeService service) throws Exception {
// 默认读取 Inbox下的邮件,最大读取5封
WellKnownFolderName folderName = WellKnownFolderName.Inbox;
ItemView itemView = new ItemView(maxEmailsGet);
FindItemsResults<Item> findItems = service.findItems(folderName, queryString, itemView); // 定义基础属性,此步骤必须要,否则会抛异常
PropertySet detailedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.Recurrence);
service.loadPropertiesForItems(findItems, detailedPropertySet);
return findItems;
} // 连接服务器
public static ExchangeService getService(String emailAddress, String password) throws URISyntaxException {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ExchangeCredentials credentials = new WebCredentials(emailAddress, password);
service.setUrl(new URI("https://outlook.office365.com/EWS/Exchange.asmx"));
service.setCredentials(credentials);
return service;
}

  

使用 EWS(Exchange Web Service)协议读取邮件、发送邮件的更多相关文章

  1. 【读书笔记】iOS网络-Web Service协议与风格

    协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...

  2. 【读书笔记】iOS-网络-Web Service协议与风格

    协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...

  3. Exchange Web Service 获取邮件的附件并保存到本地的示例代码

    private static void DownLoadMailAttachments(ExchangeService service, ItemId itemId) { EmailMessage m ...

  4. C# Po3协议读取邮件内容遇到的问题

    背景:最近在做一个小工具,读取PO3协议邮件服务器的指定人员的邮件,东西做出来了,弄了一个While死循环,20秒执行一次, 结果运行了3天,周一来IT人员找上门来了,你的电脑什么情况,怎么一个小时下 ...

  5. [PHP] PHP调用IMAP协议读取邮件类库

    socket.php 为连接socket的类库 imap.php 基于socket的imap协议封装 test.php 进行测试 require_once 'socket.php'; require_ ...

  6. [日常] imap协议读取邮件

    telnet imap.sina.net 143 A01 LOGIN shihan@appdev.sinanet.com 密码 A02 list "" * //列出邮件夹 * LI ...

  7. 一种读取Exchange的用户未读邮件数方法!

    已好几个月没写博客了,由于之前忙于开发基于Sharepoint上的移动OA(AgilePoint)和采用混合移动开发技术开发一个安卓版的企业通讯录APP(数据与lync一致),并于1月初正式上线.马年 ...

  8. 浅谈Exchange 2013开发-如何操作邮件的附件

    因为项目中客户有一个的要求,所以这个Exchange前段时间搞的我很是头疼,没接触过这个东西,但是现在看来,纸老虎一个.希望我的经验可以帮助初次接触它的人少走一些弯路! 简单介绍一下:客户要求在自己的 ...

  9. Web Service性能测试方案

    目录: 1.web Service简介 2.SoapUI介绍 3.使用SoapUI进行web service性能测试 4.使用LR进行web service性能测试 5.使用JMeter进行web s ...

随机推荐

  1. File处理

    package com.cfets.ts.u.shchgateway.util; import java.io.BufferedInputStream; import java.io.Buffered ...

  2. HTML5 Canvas ( 扩展context('2d') ) CanvasRenderingContext2D.prototype.你的方法名

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 用Redis实现分布式锁 与 实现任务队列【转载】

    这一次总结和分享用Redis实现分布式锁 与 实现任务队列 这两大强大的功能.先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意 ...

  4. shrio Subject的认证

    注意:shiro的认证只是获取用户名和密码,具体的匹配由shiro来完成

  5. 文件的基本操作(python)

    文件打开: 1. f = open('yesterday,‘r+’,encoding = ‘utf-8’) 读取的方式加载为Utf-8 r    打开文件并写, 只适用于文字类 r+   打开文件并读 ...

  6. mysql 数据备份及数据迁移

    一.使用mysql数据导出进行备份时,会备份整个表的数据,有时候只想备份一部分数据,这个时候可以使用如下方法: 1. 使用insert into 和 select结合: insert into tal ...

  7. 各种java面经资源

    面试的角度诠释Java工程师(一) 面试的角度诠释Java工程师(二) Java面试参考指南(一) Java面试参考指南(二) 阿里面试回来,想和Java程序员谈一谈 面试心得与总结—BAT.网易.蘑 ...

  8. Haskell语言学习笔记(51)Comonad

    Comonad class Functor w => Comonad w where extract :: w a -> a duplicate :: w a -> w (w a) ...

  9. one by one 项目 part 2

    在网上百度了一下mySQL常用语句 ,整理如下: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3. ...

  10. django中怎么使用mysql数据库的事务

    Mysql数据库事务: 在进行后端业务开始操作修改数据库时,可能会涉及到多张表的数据修改,对这些数据的修改应该是一个整体事务,即要么一起成功,要么一起失败. Django中对于数据库的事务,默认每执行 ...