質問

私は現在、特定の送信者から発信されるすべてのメールでのいくつかのヘッダーを置き換えるために、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