Exchange 2007 사용자 지정 전송 규칙
3136 단어 Exchange
기존의 전송 규칙이 상술한 기능을 실현할 수 없다면 사용자 정의만 있을 뿐이다.
우선 개발 서버에 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