Exchange 2007 사용자 지정 전송 규칙

3136 단어 Exchange
수요: 회사 도메인 이름은 aep에서.com이 casoo로 수정되었습니다.com 원본 도메인 이름은 여전히 메일을 받을 수 있지만, 원본 도메인 이름으로 보내는 메일은 자동으로 발송자에게 메일의 도메인 이름이 변경되었다고 알려 주십시오.
 
기존의 전송 규칙이 상술한 기능을 실현할 수 없다면 사용자 정의만 있을 뿐이다.
우선 개발 서버에 dll 두 개를 복사합니다.
Microsoft.Exchange.Data.Transport.dll ,Microsoft.Exchange.Data.Common.dll (C:\Program Files\Microsoft\Exchange Server\Public directory) 
두 가지 전송 규칙을 작성할 수 있습니다: SmtpReceiveAgent, RoutingAgent
여기에 후자를 사용하여 인코딩을 시작했습니다. 라이브러리 항목을 새로 만듭니다.
using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Exchange.Data.Transport;

using Microsoft.Exchange.Data.Transport.Routing;

using System.Diagnostics;



namespace AutoReplayForCustomerDomainRule

{

    public sealed class AutoReplayForCustomerDomainRoutingAgentFactory : RoutingAgentFactory

    {

        public override RoutingAgent CreateAgent(SmtpServer server)

        {

            return new AutoReplayForCustomerDomainRoutingAgent();

        }

    }



    public class AutoReplayForCustomerDomainRoutingAgent : RoutingAgent

    {

        public AutoReplayForCustomerDomainRoutingAgent()

        {

            base.OnSubmittedMessage += new SubmittedMessageEventHandler(AutoReplayForCustomerDomainRoutingAgent_OnSubmittedMessage);

            //base.OnResolvedMessage += new ResolvedMessageEventHandler(AutoReplayForCustomerDomainRoutingAgent_OnResolvedMessage);

        }



        void AutoReplayForCustomerDomainRoutingAgent_OnSubmittedMessage(SubmittedMessageEventSource source, QueuedMessageEventArgs e)

        {

            if (e.MailItem.FromAddress.IsValid)

            {

                string rpdomain = string.Format("{0}@{1}", e.MailItem.FromAddress.LocalPart, e.MailItem.FromAddress.DomainPart);

                bool isNeedReply = false;

                //e.MailItem.Message.Subject += rpdomain;

                //e.MailItem.Message.Subject += "|" + AppConfig.AutoReplyDomain;

                foreach (EnvelopeRecipient ep in e.MailItem.Recipients)

                {

                    if (ep.Address.IsValid && ep.Address.DomainPart.ToLower() ==AppConfig.AutoReplyDomain)

                    {

                        isNeedReply = true;

                        break;

                    }

                }



                if (isNeedReply)

                { 

                    //                  

                    EWSService.Create().SendMail(AppConfig.AutoReplySubject, AppConfig.AutoReplyMessage, new string[] { rpdomain });

                }

                

            }

        }             

      

    }

}

 
배포:
Exchange 명령행 열기
다음 명령을 수행합니다.
net stop msexchangetransport # to stop the exchange transport service
install-transportagent -name "autoreply_v1"-assemblypath c:\Transrule\AutoReplayForCustomerDomainRule.dll -transportagentfactory AutoReplayForCustomerDomainRule.AutoReplayForCustomerDomainRoutingAgentFactory enable-transportagent -identity "autoreply_v1"
get-transportagent -identity "autoreply_v1"
net start msexchangetransport

좋은 웹페이지 즐겨찾기