使⽤EWS(ExchangeWebService)协议读取邮件、发送邮件问题:
公司之前可以通过POP3协议收发邮件,因⽽在SoapUI中⽤JavaMail可以读取邮件,后来配置了Office 365,POP3协议端⼝不再开放,邮件全部读取失败,报login timeout,需要改⽤EWS(Exchange Web Service)协议。
参考:
需要导⼊此JAR包: ews-java-api-2.0.jar
import java.URI
import java.URISyntaxException
hange.*
hange.numeration.misc.ExchangeVersion
hange.numeration.property.*
hange.numeration.service.ConflictResolutionMode
hange.service.item.Item
hange.service.schema.AppointmentSchema
hange.dential.*
hange.webservices.data.propertyplex.MessageBody
hange.webservices.data.search.*
String contentSubject = "Regarding area"
String emailAddress = "ster@zhang"
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 = Subject()
//log.info "Email subject : "+subject
MessageBody messageBody = Body()
messageBody.setBodyType(BodyType.Text)
def hasAttachment = HasAttachments()
//log.info "Has attatchment ? :"+hasAttachment
ains(contentSubject)&&hasAttachment.equals(true)&&IsRead().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;
}
springframework jar包下载// 连接服务器
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("outlook.office365/EWS/Exchange.asmx"));
service.setCredentials(credentials);
return service; }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。