我目前正在写一个Exchange 2007传输代理从特定发件人替换所有发出的邮件一些头。我设法替换“从” SMTP头成功,但重写“返回路径”头似乎不工作。

为使这一切发生,我写了一个自定义的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
            }

        }
有帮助吗?

解决方案

每上述RFC返回路径报头应该由收件人的SMTP服务器进行设置。如果返回路径头中的电子邮件存在,它是要被移除,并且由接收方的服务器重置。

也许你所看到的,是正确执行的RFC。

其他提示

我不知道,但它听起来像是你可能想改变“回复”标题,而不是“返回路径”。 “返回路径”指的是由服务器来设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top