سؤال

وأنا أعمل على تطبيق حيث أحتاج لنقل الرسائل من علبة بريد إلى anoter one.I لا يمكن إرسال هذه الرسائل باستخدام بروتوكول نقل البريد الإلكتروني لأن هذا willchange معلومات رأس. أنا أستخدمه C # و خارج المعهد نظرة على معالجة الرسائل. وTHRE أي طريقة يمكنني نقل الرسائل إلى صندوق البريد الأخرى دون تغيير رأس البريد.


وبواسطة نقل أعني، أنا بحاجة لاتخاذ البريد من صندوق البريد واحد ونقل هذا إلى علبة بريد آخر من دون تغيير أي معلومات الرأس. إذا كنت تستخدم بروتوكول نقل البريد الإلكتروني، سيتم تغيير معلومات الرأس. لقد هارد أن استخدام البريد MAPI يمكن نقلها من صندوق البريد إلى صندوق بريد آخر. أي مؤشرات.

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

المحلول

إذا كنت لا يمكن تحميل كافة علب البريد ذات الصلة في ملف تعريف Outlook واحد، فإن هذا لا يمكن حلها باستخدام API التوقعات. ولكن ينبغي أن يكون من الممكن تشغيل تطبيق قائم بذاته من الحساب الإداري الذي يصل إلى مخزن معلومات Exchange مباشرة عبر MAPI الموسع. يمكنك بعد ذلك فتح علب البريد مصدر بالتتابع ونقل عناصر البريد ذات الصلة إلى علبة البريد الهدف.

وهذا من شأنه أن يسمح لك بتشغيل وظيفة دفعة حصاد كافة علب البريد من موقع مركزي في عملية عملاقة واحدة. ولكن إذا مهمتك هي لنقل الرسائل كما تظهر ثم ربما معالجة هذه بطريقة أكثر لامركزية من خلال الوظائف الإضافية تثبيت Outlook على أجهزة مصدر قد يكون نهجا أكثر عقلانية بعد كل شيء. ربما لو قلت لنا أكثر قليلا حول الدافع الخاص لنقل تلك البنود ونحن يمكن التوصل الى حل أفضل.

إذا كنت اذهب للنهج حصادة مركزي أوصي بشدة باستخدام مكتبة المساعد مثل الخلاص للحصول على هذا على الرغم من وإلا فإنه من المحتمل أن يستغرق بضعة أشهر قبل كنت قد جمعت ما يكفي من المعرفة لمعالجة هذه المهمة. و RDO إطار (كائنات بيانات الخلاص) ينبغي خصوصا مناسبة تماما لتحصل على تشغيل اسرع وقت ممكن.

نصائح أخرى

وكنت قادرا على نقل الرسائل من صندوق البريد واحد إلى آخر باستخدام الخلاص. هذا هو مثل البريد نسخة من صندوق البريد واحد إلى آخر. تسجيل الدخول الأول إلى صندوق بريد الوجهة باستخدام الفداء. الحصول على إشارة إلى المجلد حيث تريد نقل البريد. في حالتي، كان صندوق البريد الوارد. الآن تحويل العنصر البريد التوقعات إلى RDOMail ونسخ rdomail إلى مجلد الوجهة. هنا رمز غير -

 rdoSession.LogonExchangeMailbox("TEST", "ServerName");
 RDOExchangeMailboxStore mailBoxStore = (Redemption.RDOExchangeMailboxStore)
 rdoSession.Stores.DefaultStore;
 RDOFolder inboxFolder = null;

            foreach (RDOFolder rdoFolder in mailBoxStore.IPMRootFolder.Folders)
            {
                if (rdoFolder.Name.Equals("Inbox", StringComparison.InvariantCultureIgnoreCase))
                {
                    inboxFolder = rdoFolder;
                    break;
                }
            }
            rdoMail.CopyTo(inboxFolder);

مع ذلك، سيتم نسخ الإلكتروني للصندوق بريد جديد دون تغيير أي معلومات الرأس.

إذا كنت تستخدم API Outloook أنا متأكد من أن هناك دعم للنسخ الاحتياطي والاستعادة. لذا احتياطية الرسائل الخاصة بك من حساب واحد واستعادته من جهة أخرى. وستكون هذه أول محاولة لي. PS: أنا لست على دراية API

.

ما هي العلاقة بين صناديق البريد؟ هل هم على نفس ملقم Exchange؟ إذا كان الأمر كذلك، وأفضل رهان هو استخدام MAPI لنسخ الرسائل. إذا لم يكن كذلك، يمكنك إما تصدير الرسائل إلى PST أو مجموعة من الملفات MSG.. هل هذا ضرورة أن يكون آليا؟

وماذا بالضبط هل تقصد ب "نقل"؟ إذا كنت تتحدث عن ما يعادل سحب وإسقاط البريد من علبة واحدة إلى أخرى محملة داخل ملف تعريف Outlook نفسه، بعد ذلك فقط استخدام الأسلوب MailItem.Move.

وبعد ذلك ما تحتاج إليه هو MAPI. انها API معقد جدا. هناك واحد، منذ فترة طويلة خارج طباعة كتاب حول هذا الموضوع، ولكن هذا كل شيء. أفضل مكان للبدء هو لتحميل MFCMAPI وإلقاء نظرة على كيف يمكن أن تفعل ما عليك القيام، على سبيل المثال صناديق البريد وفتح اثنين من المستخدمين نسخ رسالة بينهما. ثم، أن ننظر في مصدر MFCMAPI ونرى كيف يتم ذلك، والعمل من هناك.

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