2016-10-05 5 views
0

Моя проблема: я не могу поместить задержку при отправке элемента (попробовал от 2 минут до 2 дней, не повезло).Задержка отправки почты с помощью веб-служб Exchange (EWS) Управляемый API

Сама почта отправляется немедленно и в обязательном порядке - это просто задержка, которая не работает? любая помощь будет оценена по достоинству.

Примечание -

  • Я использую this as an example для большинства из моего кода.

  • Я Я использую обмен 2010 SP2

  • Почта посылает штраф, просто нет задержки


Public Class Mail 
    Private Const DEFERREDSENDTIMEFLAG As Integer = 16367 
    Public Shared ReadOnly Property EXCHANGESERVICEURL As String 
     Get 
      Return ConfigurationManager.AppSettings("EXCHANGESERVICEURL") 
     End Get 
    End Property 
    Public Shared ReadOnly Property DOMAINNAME As String 
     Get 
      Return ConfigurationManager.AppSettings("DOMAINNAME") 
     End Get 
    End Property 
    Public Shared ReadOnly Property EXCHANGEUSERNAME As String 
     Get 
      Return ConfigurationManager.AppSettings("EXCHANGEUSERNAME") 
     End Get 
    End Property 
    Public Shared ReadOnly Property EXCHANGEPASSWORD As String 
     Get 
      Return ConfigurationManager.AppSettings("EXCHANGEPASSWORD") 
     End Get 
    End Property 
    Public Shared ReadOnly Property EXCHANGEVERSION As ExchangeVersion 
     Get 
      Return CType(System.Enum.Parse(GetType(ExchangeVersion), ConfigurationManager.AppSettings("EXCHANGEVERSION")), ExchangeVersion) 
     End Get 
    End Property 
    Public Shared Sub SendMessage(ByVal fromAddress As String, ByVal toAddress() As String, ByVal ccAddress() As String, ByVal bccAddress() As String, ByVal subject As String, ByVal body As String, ByVal minutesDelay As Integer) 

     ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateCertificate) 
     Dim service As New ExchangeService(EXCHANGEVERSION) 
     service.Credentials = New WebCredentials(EXCHANGEUSERNAME, EXCHANGEPASSWORD, DOMAINNAME) 
     service.Url = New Uri(EXCHANGESERVICEURL) 

     Dim Message As New Microsoft.Exchange.WebServices.Data.EmailMessage(service) 
     'set delay send time 
     If minutesDelay > 0 Then 
      Dim sendTime As String = DateTime.Now.AddMinutes(minutesDelay).ToUniversalTime().ToString() 
      Dim PR_DEFERRED_SEND_TIME As New ExtendedPropertyDefinition(DEFERREDSENDTIMEFLAG, MapiPropertyType.SystemTime) 
      Message.SetExtendedProperty(PR_DEFERRED_SEND_TIME, sendTime) 
     End If 
     Message.From = fromAddress 
     If toAddress IsNot Nothing Then 
      For Each t As String In toAddress 
       Message.ToRecipients.Add(t) 
      Next 
     End If 
     If ccAddress IsNot Nothing Then 
      For Each t As String In ccAddress 
       Message.CcRecipients.Add(t) 
      Next 
     End If 
     If bccAddress IsNot Nothing Then 
      For Each t As String In bccAddress 
       Message.BccRecipients.Add(t) 
      Next 
     End If 
     Message.Subject = subject 
     Message.Body = body 


     Message.SendAndSaveCopy() 'save means make sure it's saved in the sent items folder 
     'message.Attachments 
    End Sub 

    Private Shared Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean 
     Return True 
    End Function 
End Class 

ответ

1

Я хотел бы предложить вам использовали набранный переменной, а затем преобразование даты -time для строки (как в примере), а затем ее отправки. например, просто использовать

Message.SetExtendedProperty(PR_DEFERRED_SEND_TIME, DateTime.Now.AddMinutes(minutesDelay).ToUniversalTime()) 

Библиотека предназначена для работы с типизированными переменных, но вы можете увидеть разницу в POST, используя строку против переменной типизированных, если вы включите трассировку, например

 <t:ExtendedProperty> 
      <t:ExtendedFieldURI PropertyTag="16367" PropertyType="SystemTime"/> 
      <t:Value>2016-05-10T03:20:16.000</t:Value> 
     </t:ExtendedProperty> 

против

  <t:ExtendedProperty> 
      <t:ExtendedFieldURI PropertyTag="16367" PropertyType="SystemTime"/> 
      <t:Value>2016-10-05T03:12:30.067Z</t:Value> 
     </t:ExtendedProperty> 

Вы также можете исправить строку, но с использованием типизированной переменной больше смысла с тем изменением, которое вы производите для меня.

+0

Mate вы чемпион, приветствия, работали как шарм –