• SoapUI中读取Office365邮件


    常见邮件服务一般使用IMAP邮件访问协议,如果你所在公司更换到Office 365则需要另一个组件。

    Office 365使用的是Exchange Server电子邮件服务组件,需要微软的Jar包来支持。

    • 通过Maven下载ews-java-api-2.0.jar
    • 下载地址http://mvnrepository.com/artifact/com.microsoft.ews-java-api/ews-java-api
    • 在Groovy脚本中调用即可(可参考下面示例脚本)
    package GroovyScript
    
    import java.util.Date
    import microsoft.exchange.webservices.data.core.enumeration.property.BodyType
    import microsoft.exchange.webservices.data.core.service.item.Item
    import microsoft.exchange.webservices.data.property.complex.MessageBody
    import microsoft.exchange.webservices.data.search.FindItemsResults
    import microsoft.exchange.webservices.data.core.enumeration.service.ConflictResolutionMode
    
    int executeCount = 0 // 执行次数
    int executeMax = 30 // 最大执行次数 同时也是最大执行时间
    boolean checkIt = false // 是否找到需要的邮件
    
    String emailAddress = context.expand( '${#Project#resetPWD_Email}' ) // 邮箱
    String password = context.expand( '${#Project#resetPWD_OriginalPWD}' ) // 密码
    int maxEmailsGet = 5 // 最大邮件获取数
    String queryString = "Regarding area" // 筛选条件
    
    while (executeCount < executeMax){
    
    	ReadEmail readEmail = new ReadEmail() 
    	FindItemsResults getEmails = readEmail.getEmails(emailAddress, password, maxEmailsGet, "") // 连接邮箱 拿邮件
    
    	if (hasFound(getEmails, queryString)){
    		checkIt = true
    		break
    	} else{
    		Thread.sleep(1000)
    		executeCount += 1
    		log.info  "---ExecuteCount: $executeCount"
    		continue
    	}
    }
    
    assert checkIt, "Can not get the FeedBack email"
    
    
    // ----------------------------判断是否成功----------只针对此step------------------------------------------------------
    def boolean hasFound(FindItemsResults getEmails, String queryString){
    
    	boolean hasFound = false
    	// 迭代 邮件内容
    	for (Item email : getEmails) {
    		
    		Date date = new Date() // 时间对象
    		def currentTime = date.getTime() // 当前时间
    		def lastEmailTime = email.getDateTimeReceived().getTime() // 此封邮件收取时间
    		def interval = currentTime - lastEmailTime // 时间间隔
    		def subject = email.getSubject() // 邮件标题
    		boolean hasAttachment = email.getHasAttachments() // 是否存在附件
    		def body = email.getBody() // 邮件内容
    		
    		if ( interval < 30000 && subject.contains(queryString) && hasAttachment && email.getIsRead().equals(false)){ // 30秒以内的邮件有效
    			hasFound =  true
    
    			//置email为已读,并且同步到邮件服务器,这样无论以什么方式查看邮件,邮件都是已读状态
    			email.setIsRead(true)
    	 		email.update(ConflictResolutionMode.AlwaysOverwrite)
    			
    			break
    		} else {
    			continue
    		}
    	}
    	return hasFound
    }
    

      

  • 相关阅读:
    【Hadoop离线基础总结】Hue的简单介绍和安装部署
    【Hadoop离线基础总结】Hue与Mysql集成
    【Hadoop离线基础总结】Hue与Impala集成
    【Hadoop离线基础总结】Hue与Hive集成
    【Hadoop离线基础总结】Hue与Hadoop集成
    【Hadoop离线基础总结】impala简单介绍及安装部署
    centos7启动httpd服务失败:Job for httpd.service failed because the control process exited with error code.
    【Hadoop离线基础总结】Mac版VMware Fusion虚拟机磁盘挂载
    Azkaban无法连接网页
    【Hadoop离线基础总结】流量日志分析网站整体架构模块开发
  • 原文地址:https://www.cnblogs.com/kill0001000/p/9009227.html
Copyright © 2020-2023  润新知