我使用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服务器时,该命令会冻结,并且没有电子邮件离开服务器。
感谢任何帮助
答案 0 :(得分:0)
你可以尝试开始两件事:
检查Chris Haas上面的建议,并添加一个try / catch来处理空值,或者使用类似的东西专门注意它:
如果e.mailitem不是什么都没有,而且e.mailitem.message也不算什么,而且e.mailitem.subject并不是什么
'修理案例
elseif e.mailitem并不是什么,而且e.mailitem.mesasge并不是什么
'主题未设置,请继续设置
如果
删除执行任何操作的代码,只需添加一些虚拟代码来替换它(如Dim i作为整数= 2),以确保Exchange不会因为拥有任何类型的传输代理而停滞不前。