在邮件传输代理中添加收件人 [英] Add recipient inside a message transport agent

查看:133
本文介绍了在邮件传输代理中添加收件人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Exchange 2010SP1邮件传输代理SDK

Exchange 2010SP1 message transport agent SDK

我正在创建一个MTA来自动存档通过传输管道的某些电子邮件。有没有办法在传输代理事件中复制电子邮件(或添加收件人)?根据

technet
,代理需要处理  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 to technet 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("malaskra_mail@testvis.local"));
                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);
            }
        }


这篇关于在邮件传输代理中添加收件人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆