本文介绍了在邮件传输代理中添加收件人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Exchange 2010SP1邮件传输代理SDK
Exchange 2010SP1 message transport agent SDK
我正在创建一个MTA来自动存档通过传输管道的某些电子邮件。有没有办法在传输代理事件中复制电子邮件(或添加收件人)?根据
,代理需要处理 OnSubmittedMessage
事件(在路由代理中)并且我已经设置了。
I'm making an MTA to automatically archive certain emails that go through the transport pipeline. Is there a way to copy an email (or add a recipient) inside a transport agent event? According totechnet an agent needs to handle the OnSubmittedMessage event (in RoutingAgent) and I have that set up.
public class RoutingMailAgent : RoutingAgent
{
private static ILog _log;
public const string RoutedMessageRoutingKey = "vis.process.mail.{routingtype}";
public RoutingMailAgent()
{
_log = LogManager.GetLogger(GetType());
_log.Info("Starting");
OnSubmittedMessage += SubmittedMessageHandler;
}
private void SubmittedMessageHandler(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
{
try
{
_log.Info("SubmittedMessageHandler START");
if (SubjectInfo.IsPertinent(e.MailItem.Message.Subject) == SaveMode.None)
return;
var routingType = e.MailItem.InboundDeliveryMethod.ToString();
var msg = new EmailMessageExt(e.MailItem.Message, e.MailItem.InboundDeliveryMethod);
KPICLient.SendRawMessage(RoutedMessageRoutingKey.Replace("{routingtype}", routingType), msg);
_log.Info("SubmittedMessageHandler END");
}
catch (Exception ex)
{
_log.Error("SubmittedMessageHandler ERROR", ex);
}
}
}
推荐答案
当我在OnRoutedMessage中的MailItem.Recipients.Add时,它抛出了NotImplemented,但在OnSubmitted中使用它有效吗?
When I MailItem.Recipients.Add in OnRoutedMessage it threw NotImplemented, but using it in OnSubmitted works?
工作代码:
private static ILog _log;
public const string RoutedMessageRoutingKey = "vis.process.mail.{routingtype}";
public RoutingMailAgent()
{
_log = LogManager.GetLogger(GetType());
_log.Info("Starting");
OnSubmittedMessage += SubmittedMessageHandler;
}
private void SubmittedMessageHandler(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
{
try
{
if (SubjectInfo.IsPertinent(e.MailItem.Message.Subject) == SaveMode.None)
return;
_log.Info("SubmittedMessageHandler START");
var routingType = e.MailItem.InboundDeliveryMethod.ToString();
e.MailItem.Recipients.Add(new RoutingAddress("[email protected]"));
var msg = new EmailMessageExt(e.MailItem.Message, e.MailItem.InboundDeliveryMethod);
KPICLient.SendRawMessage(RoutedMessageRoutingKey.Replace("{routingtype}", routingType), msg);
_log.Info("SubmittedMessageHandler END");
}
catch (Exception ex)
{
_log.Error("SubmittedMessageHandler ERROR", ex);
}
}
这篇关于在邮件传输代理中添加收件人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!