使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                問題:
公司之前可以通過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)协议读取邮件、发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 开源智能聊天机器人rasa以及前端ras
- 下一篇: C++实现双人枪战游戏
