VB.NET交换运输代理

时间:2011-01-13 18:36:17

标签: vb.net exchange-server-2007 exchange-transport-agents

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

我正在尝试创建一个传输代理,用于验证传出电子邮件的主题行是否为空,如果是,则将“kranichs jewelers”添加到主题行。如果它不为空,则会正确显示传出电子邮件的格式

我在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

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

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

你可以尝试开始两件事:

  1. 检查Chris Haas上面的建议,并添加一个try / catch来处理空值,或者使用类似的东西专门注意它:

    如果e.mailitem不是什么都没有,而且e.mailitem.message也不算什么,而且e.mailitem.subject并不是什么 '修理案例
    elseif e.mailitem并不是什么,而且e.mailitem.mesasge并不是什么 '主题未设置,请继续设置 如果

  2. 结束
  3. 删除执行任何操作的代码,只需添加一些虚拟代码来替换它(如Dim i作为整数= 2),以确保Exchange不会因为拥有任何类型的传输代理而停滞不前。