سؤال

أنا أكتب حاليا وكيل النقل 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
            }

        }
هل كانت مفيدة؟

المحلول

لكل RFCs، من المفترض تعيين رأس العودة المسار بواسطة خادم SMTP للمستلم. في حالة وجود رأس مسار العودة في البريد الإلكتروني، سيتم إزالته وإعادة تعيينه بواسطة خادم المستلم.

ربما ما تراه، هو التنفيذ الصحيح ل RFCS.

نصائح أخرى

لست متأكدا، لكن يبدو أنك قد ترغب في تغيير رأس "الرد إلى" وليس "مسار العودة". من المفترض أن يتم تعيين "مسار العودة" من قبل الخادم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top