2

Это первый раз, когда я работаю над Exchange Server Development. Ниже представлен простой агент транспорта, который я использую, этот агент должен просто обновить темы электронной почты, как показано ниже в коде.Exchange Server 2007 Transport Agent Issue

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/

Моя конфигурация системы

Я использую Exchange Server 2007 Virtual Machine предоставленный Microsoft из ссылки ниже

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

Я также установил Visual Studio 2008 на виртуальную машину для отладки.

Помогите мне в решении проблемы?

ответ

2

Проблема решена. :)

Я должен использовать агент маршрутизации вместо агента 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; 
     } 
    } 
} 
+0

Привет, у знать, как «удалить/удалить» почту, если объект содержит определенное слово? – Stan92

+0

Извините, я покинул развитие Exchange-сервера. Итак, нет идеи – MA1

Смежные вопросы