2016-10-05 1 views
0

내 문제는 항목을 보내는 데 지연이 발생할 수 없다는 것입니다. 2 분에서 2 일까지 행운을 빕니다.EWS (Exchange Web Services) 관리되는 API로 메일 전송 지연

메일 자체가 즉시 전송되며 실패하지 않습니다. 지연이 작동하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

주 -

  • 나는 내 코드의 대부분을 this as an example을 사용하고있다.

  • 나는 단지 지연

  • 메일은 잘 보내 SP2 Exchange 2010을 사용하지 않고 있어요


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

차라리 다음 날짜 변환은 변수 입력 사용 제안 (예와 같이) 문자열로 변환하여 보낸다. 예를 들어 그냥 라이브러리가 입력 된 변수를 처리하도록 설계

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

사용하지만 당신은 당신이

대 예를 들어

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

추적을 활성화하면 형식화 된 변수 대 문자열을 사용하여 POST의 차이를 볼 수 있습니다

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

문자열을 수정할 수도 있지만 입력 된 변수를 사용하면 샘플 변경 사항이 나에게 잘 돌아갑니다.

+0

너는 챔피언이야, 환호하고, 매력처럼 일했다. –

관련 문제