【问题标题】:Editing an SMTP header with an Exchange 2007 Transport Agent使用 Exchange 2007 传输代理编辑 SMTP 标头
【发布时间】:2010-12-13 00:35:43
【问题描述】:

我目前正在编写一个 Exchange 2007 传输代理来替换来自特定发件人的所有外发邮件中的某些标头。我成功替换了 'From' SMTP 标头,但重写 'Return-Path' 标头似乎不起作用。

为了实现这一切,我编写了一个自定义 SmtpReceiveAgent 并像这样订阅 OnEndOfData 事件:

private static void MyAgent_OnEndOfData(ReceiveMessageEventSource source, EndOfDataEventArgs e)
        {

            try
            {
                var address = e.MailItem.Message.From.SmtpAddress;
                if (address.ToLower().EndsWith("[internal email domain]"))
                {
                    // replace the From: header - WORKING FINE!
                    e.MailItem.Message.From = new EmailRecipient("[displayname]",
                                                                 "[email address]");

                    // replace the Return-Path: header - NOT WORKING!
                    var headerList = e.MailItem.Message.RootPart.Headers;
                    var header = (AddressHeader)headerList.FindFirst("Return-Path");
                    var newheader = new AddressHeader("Return-Path") { Value = "[email address" };
                    headerList.ReplaceChild(newheader, header);
                }
            }
            catch (Exception ex)
            {
               // do something useful here
            }

        }

【问题讨论】:

    标签: smtp exchange-server exchange-server-2007 exchange-transport-agents


    【解决方案1】:

    根据 RFC,Return-Path 标头应该由收件人的 SMTP 服务器设置。如果电子邮件中存在 Return-Path 标头,则将其删除,并由收件人的服务器重置。

    也许您看到的是 RFC 的正确实现。

    【讨论】:

      【解决方案2】:

      我不确定,但听起来您可能想要更改“回复”标题而不是“返回路径”。 “return-path”是由服务器设置的。

      【讨论】:

      • 我实际上想更改返回路径标头。我正在寻找一种方法来覆盖服务器的默认行为。我还查看了运输规则,但它们也无法帮助我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 2011-12-31
      相关资源
      最近更新 更多