分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

使用 EWS(Exchange Web Service)协议读取邮件、发送邮件

发布时间:2023-09-06 01:14责任编辑:胡小海关键词:Web邮件

问题:

公司之前可以通过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.URIimport java.net.URISyntaxExceptionimport microsoft.exchange.webservices.data.core.*import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersionimport microsoft.exchange.webservices.data.core.enumeration.property.*import microsoft.exchange.webservices.data.core.enumeration.service.ConflictResolutionModeimport microsoft.exchange.webservices.data.core.service.item.Itemimport microsoft.exchange.webservices.data.core.service.schema.AppointmentSchemaimport microsoft.exchange.webservices.data.credential.*import microsoft.exchange.webservices.data.property.complex.MessageBodyimport microsoft.exchange.webservices.data.search.*String contentSubject = "Regarding area"String emailAddress = "auto.tester@zhang.com"String password = "Autotest202010"int maxEmailsGet = 5String 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 : "+subjectMessageBody messageBody = mail.getBody()messageBody.setBodyType(BodyType.Text)def hasAttachment = mail.getHasAttachments()//log.info "Has attatchment ? :"+hasAttachmentif(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)协议读取邮件、发送邮件

原文地址:http://www.cnblogs.com/MasterMonkInTemple/p/7600830.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved