Проблема с транспортным агентом Exchange Server 2007
Это первый раз, когда я работаю над разработкой 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
Отладка агента транспорта MS Exchange 2007
http://omarjames.com/blog/index.php/debugging-exchange-transport-agent/
Конфигурация моей системы
Я использую виртуальную машину Exchange Server 2007, предоставленную Microsoft по ссылке ниже
http://www.microsoft.com/en-pk/download/details.aspx?id=14901
Я также установил Visual Studio 2008 на виртуальной машине для отладки.
Пожалуйста, помогите мне в решении проблемы?
1 ответ
Задача решена.:)
Я должен использовать Routing Agent вместо SmtpReceive Agent, потому что только Routing Agent гарантированно увидит все электронные письма, проходящие через 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;
}
}
}