在EWS Java API中查找邮件是否成功发送

时间:2017-08-22 11:56:55

标签: java exchangewebservices

我正在使用Java EWS API使用SendandSaveCopy发送邮件。如果邮件发送成功与否,我想要检查一下(如果互联网不能正常工作)。当我尝试这样做时,它表明它是一种无效方法。有没有办法找出邮件是否成功发送。

1 个答案:

答案 0 :(得分:0)

EmailMessage类中,使用方法setIsDeliveryReceiptRequested并在发送邮件之前设置为true。 一旦发送邮件并且邮件服务器已将邮件传递给收件人,您将收到一条消息(如果邮件服务器支持)报告收件人何时收到邮件。

   /**
   * Sets the checks if is delivery receipt requested.
   *
   * @param value the new checks if is delivery receipt requested
   * @throws Exception the exception
   */
  public void setIsDeliveryReceiptRequested(Boolean value) throws Exception {
    this.getPropertyBag().setObjectFromPropertyDefinition(
        EmailMessageSchema.IsDeliveryReceiptRequested, value);
  }

https://github.com/OfficeDev/ews-java-api/blob/master/src/main/java/microsoft/exchange/webservices/data/core/service/item/EmailMessage.java#L437

来自官方API的DOC

  

Message对象包含两个属性,可以指示基础MAPI系统报告成功接收消息:DeliveryReceipt和ReadReceipt。   将这些属性设置为True并发送消息时,基础MAPI系统会自动为您跟踪消息。设置DeliveryReceipt属性时,MAPI系统会在收件人收到邮件时自动为发件人生成一条消息。设置ReadReceipt属性时,MAPI系统会在收件人阅读邮件时自动生成向发件人报告的邮件。

https://msdn.microsoft.com/en-us/library/ms526415(v=exchg.10).aspx

您还可以使用ReadReceipt了解邮件的读取时间。