首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟使用(EWS)托管API发送邮件

延迟使用(EWS)托管API发送邮件
EN

Stack Overflow用户
提问于 2016-10-05 00:11:18
回答 1查看 579关注 0票数 0

我的问题是,我似乎不能推迟发送项目(已经尝试了2分钟到2天,没有运气)。

邮件本身就会立即发送,而且不会失败--只是延迟不起作用吗?任何帮助都将不胜感激。

注-

  • 我的大部分代码都是使用这作为一个例子的。
  • 我正在使用exchange 2010 SP2
  • 邮件发得很好,只是没有延误。
代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-05 03:24:53

我建议您使用类型化变量,而不是将日期时间转换为字符串(就像示例所做的那样),然后发送它。(如使用)

代码语言:javascript
复制
Message.SetExtendedProperty(PR_DEFERRED_SEND_TIME, DateTime.Now.AddMinutes(minutesDelay).ToUniversalTime())

该库旨在处理类型化变量,但如果启用跟踪(例如),则可以使用字符串与类型化变量在帖子中看到差异。

代码语言:javascript
复制
        <t:ExtendedProperty>
          <t:ExtendedFieldURI PropertyTag="16367" PropertyType="SystemTime"/>
          <t:Value>2016-05-10T03:20:16.000</t:Value>
        </t:ExtendedProperty>

vs

代码语言:javascript
复制
          <t:ExtendedProperty>
          <t:ExtendedFieldURI PropertyTag="16367" PropertyType="SystemTime"/>
          <t:Value>2016-10-05T03:12:30.067Z</t:Value>
        </t:ExtendedProperty>

您也可以修复字符串,但是使用类型化的varible更有意义,您的示例对我来说运行得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39863571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档