使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
生活随笔
收集整理的這篇文章主要介紹了
使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題:
公司之前可以通過POP3協(xié)議收發(fā)郵件,因而在SoapUI中用JavaMail可以讀取郵件,后來配置了Office 365,POP3協(xié)議端口不再開放,郵件全部讀取失敗,報(bào)login timeout,需要改用EWS(Exchange Web Service)協(xié)議。
參考 :http://blog.csdn.net/yangcheng33/article/details/55049629
需要導(dǎo)入此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);
// 迭代 郵件內(nèi)容
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為已讀,并且同步到郵件服務(wù)器,這樣無論以什么方式查看郵件,郵件都是已讀狀態(tài)
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 {
// 默認(rèn)讀取 Inbox下的郵件,最大讀取5封
WellKnownFolderName folderName = WellKnownFolderName.Inbox;
ItemView itemView = new ItemView(maxEmailsGet);
FindItemsResults<Item> findItems = service.findItems(folderName, queryString, itemView);
// 定義基礎(chǔ)屬性,此步驟必須要,否則會拋異常
PropertySet detailedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.Recurrence);
service.loadPropertiesForItems(findItems, detailedPropertySet);
return findItems;
}
// 連接服務(wù)器
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;
}
總結(jié)
以上是生活随笔為你收集整理的使用 EWS(Exchange Web Service)协议读取邮件、发送邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源智能聊天机器人rasa以及前端ras
- 下一篇: C++实现双人枪战游戏