【问题标题】:Exchange Server 2007 Transport Agent IssueExchange Server 2007 传输代理问题
【发布时间】:2014-01-03 04:43:36
【问题描述】:

这是我第一次从事 Exchange Server 开发。下面是我正在使用的一个简单的传输代理,这个代理应该简单地更新电子邮件主题,如下面的代码所示。

using System;
using System.Collections.Generic;
using System.Text;

using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Smtp;



namespace MyAgents
{
    public sealed class MyAgentFactory : SmtpReceiveAgentFactory
    {
        public override SmtpReceiveAgent CreateAgent(SmtpServer server)
        {
            return new MyAgent();
        }
    }
    public class MyAgent : SmtpReceiveAgent
    {
        public MyAgent()
        {
            this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);
        }
        private void MyEndOfDataHandler(ReceiveMessageEventSource source, EndOfDataEventArgs e)
        {
            e.MailItem.Message.Subject = "This message passed through my agent: " + e.MailItem.Message.Subject;
        }
    }
}

下面是我用来安装代理的 Powershell 脚本。

Net Stop MSExchangeTransport
Install-TransportAgent -Name MyAgent -AssemblyPath EmailLogger.dll -TransportAgentFactory MyAgents.MyAgentFactory
Enable-TransportAgent -Identity MyAgent
Net Start MSExchangeTransport

使用 Exchange 命令行管理程序成功安装代理。

现在当我发送/接收电子邮件作为交换时,电子邮件主题不会被修改。电子邮件有其原始主题。不知道为什么?

我还执行了以下链接中提到的步骤来调试代理,但 Visual Studio 调试器没有命中断点。

http://www.sf-tools.net/Messaging/tabid/55/EntryId/163/Exchange-2010-Transport-Agent.aspx

Debugging MS Exchange 2007 Transport Agent

http://omarjames.com/blog/index.php/debugging-exchange-transport-agent/

我的系统配置

我正在使用 Microsoft 通过以下链接提供的 Exchange Server 2007 虚拟机

http://www.microsoft.com/en-pk/download/details.aspx?id=14901

我还在虚拟机上安装了 Visual Studio 2008 进行调试。

请帮我解决问题?

【问题讨论】:

    标签: c# debugging visual-studio-2008 exchange-server-2007 exchange-transport-agents


    【解决方案1】:

    问题已解决。 :)

    我必须使用路由代理而不是 SmtpReceive 代理,因为只有路由代理才能保证看到所有通过 Exchange Server 的电子邮件。

    以下是修改后的工作代码,其他一切都保持不变

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    using Microsoft.Exchange.Data.Transport;
    using Microsoft.Exchange.Data.Transport.Routing;
    
    
    
    namespace MyAgents
    {
        public sealed class MyAgentFactory : RoutingAgentFactory
        {
            public override RoutingAgent CreateAgent(SmtpServer server)
            {
                return new MyAgent();
            }
        }
        public class MyAgent : RoutingAgent
        {
            public MyAgent()
            {
                this.OnSubmittedMessage += new SubmittedMessageEventHandler(this.MySubmittedMessageHandler);            
            }
    
            public void MySubmittedMessageHandler(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
            {
                e.MailItem.Message.Subject = "This message passed through my agent: " + e.MailItem.Message.Subject;
            }
        }
    }
    

    【讨论】:

    • 嗨,如果主题包含特定单词,你知道如何“删除/删除”邮件吗?
    • 对不起,我离开了 Exchange 服务器开发。所以不知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2010-11-06
    • 2012-01-14
    • 1970-01-01
    相关资源
    最近更新 更多