VB.NET EXCHANGE传输代理
我使用c#发布了相同的问题,但没有收到任何答案,因此我将尝试使用VB发布相同的问题 我正在尝试创建一个传输代理来验证发送电子邮件的主题行是否为空,如果为空,则会在主题行中添加“kranichs jewelers”。如果它不是空的,则会将传出电子邮件的格式设置为正确 vb中的代码:VB.NET EXCHANGE传输代理,vb.net,exchange-server-2007,exchange-transport-agents,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.Tran
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服务器时,que将冻结,并且没有电子邮件离开服务器
感谢您的帮助您可以尝试从两件事开始:
'修复案例
否则,如果e.mailitem不是零,并且e.mailitem.mesasge也不是零,则
'主题尚未设置,请继续设置一个。
如果结束
您是否尝试过将代码包装在try/catch块中并写入收到的任何错误?当我以前写这些(过去称为传输同步)时,它们比NT服务更难调试(至少那些崩溃!)。可能是
Subject
为空时为空,所以你得到了一个NRE。我添加了一个try-catch,并将if-case切换为isnothing等。它现在通过将Subject格式化为正确的大小写来工作,但是,如果主题不包含任何内容,它仍然会将其保留为空。有什么想法吗?只有设置了所有这些属性,我上面的If语句才是真的。如果主题为空,则要单独测试它是否为空字符串,或者它是否为空(即:根本未设置)。我编辑了答案,以便有一个更长的版本可以做到这一点。:)