0

我使用 c# 发布了相同的问题,但没有收到任何答案,所以我将尝试使用 VB 发布相同的问题

我正在尝试创建一个传输代理来验证传出电子邮件的主题行不为空,如果是,那么它将“kranichs 珠宝商”添加到主题行。如果它不为空,它会转换外发电子邮件的格式

我在vb中的代码:

Imports System

Imports System.Collections.Generic

Imports System.Text

Imports Microsoft.Exchange.Data.Transport

Imports Microsoft.Exchange.Data.Transport.Routing

Imports Microsoft.Exchange.Data.Transport.Smtp


Namespace mySubjectAgent

    NotInheritable Class myRoutingFactory

        Inherits RoutingAgentFactory

        Public Overrides Function CreateAgent(ByVal server As SmtpServer) As RoutingAgent
            Return New MyAgent
        End Function

    End Class

    Public Class MyAgent
        Inherits RoutingAgent

        Private Sub MyEndOfDataHandler(ByVal source As SubmittedMessageEventSource, ByVal e As QueuedMessageEventArgs) Handles Me.OnSubmittedMessage
            If e.MailItem.Message.Subject.Length = 0 Then
                e.MailItem.Message.Subject = "Kranichs Jewelers"
            Else
                e.MailItem.Message.Subject = StrConv(e.MailItem.Message.Subject, VbStrConv.ProperCase)
            End If
        End Sub

    End Class

End Namespace

代码的问题是.. 每当我将此传输代理安装到交换服务器时,que 冻结并且没有电子邮件离开服务器。

任何帮助表示赞赏

4

1 回答 1

0

您可以尝试从两件事开始:

  1. 检查上面 Chris Haas 的建议,或者添加一个 try/catch 来处理空值,或者使用这样的东西专门监视它:

    if e.mailitem is not nothing andalso e.mailitem.message is not nothing andalso e.mailitem.subject is not nothing then
    ' 修正 case
    elseif e.mailitem is not nothing andalso e.mailitem.mesasge is not nothing then
    ' 没有设置主题,继续并设置一个。
    万一

  2. 删除执行任何操作的代码并添加一些虚拟代码来替换它(例如 Dim i as integer = 2),以确保 Exchange 不会因为拥有任何类型的传输代理而停止运行。

于 2011-01-14T18:08:28.577 回答