2012-09-20 33 views
6

में मैं ApplicationEvents_11_ItemSendEventHandler उपयोग कर रहा हूँ (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.applicationevents_11_itemsendeventhandler.aspx देखें) एक आइटम आउटलुक से भेजा जाता है जब कुछ प्रसंस्करण करने के लिए।घटना "आइटम भेजा" आउटलुक

हालांकि, "भेजें", बल्कि "भेजा" की तुलना में, मैं इस तरह के प्रेषक के रूप में कुछ जानकारी प्राप्त करने के लिए, असमर्थ हूँ पर इस घटना को आग के रूप में, समय आदि

भेजा वहाँ एक वैकल्पिक घटना है कि है आग के बाद आइटम वास्तव में भेजा गया है? मैंने इस ब्लॉग पोस्ट को पढ़ा है; http://easyvsto.wordpress.com/2010/07/27/how-to-save-mail-content-when-a-mail-is-sent-from-outlook/ लेकिन मैं भेजे गए आइटम फ़ोल्डर में दिखाई देने वाली वस्तुओं के आधार पर सावधान हूं, क्योंकि यह उपयोगकर्ता इस सुविधा को अक्षम कर सकता है।

संपादित करें: मैं जोड़ने चाहिए कि मैं वास्तव में "घड़ी भेजे गए आइटम फ़ोल्डर" दृष्टिकोण की कोशिश की है और देखा है कि ItemAdd घटना केवल, उसके बाद फिर से नहीं जब तक मैं Outlook को पुनः प्रारंभ पहला ईमेल मैं भेज के लिए आग लगती है । मेरा कोड निम्नानुसार है;

var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); 
sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); 

और मेरे विधि ...

void Items_ItemAdd(object item) 
{ 
    MessageBox.Show(((Outlook.MailItem)item).Subject); 
} 
+0

आप रखना चाहिए आइटम जीवित वस्तु (एक वर्ग चर में) घटनाओं के लिए आग लगने के लिए। आपके मामले में संकलक भेजा गया मेल रखने के लिए एक अस्थायी चर बनाता है। वस्तु ऑब्जेक्ट। जब वह चर कचरा इकट्ठा होता है, तो घटनाएं फायरिंग बंद कर देंगी। –

उत्तर

4

आप एक मॉडल संवाद (WPF/Winforms MessageBox) का उपयोग करते हैं, आप केवल पहली घटना ट्रिगर मिल जाएगा। आपको गैर-अवरुद्ध ईवेंट हैंडलर (संभवतः एक आइटम क्यूइंग रणनीति) लागू करना होगा।

अवरुद्ध यूआई कॉल मोडल संवाद का प्रयोग न करें - आउटलुक देखेंगे यूआई अवरुद्ध है और बाद में बीच में आता है ट्रिगर ध्यान न दें।

this form post for reference देखें।


आप भेजा मद भंडारण नियंत्रित करने के लिए के बारे में उपयोगकर्ताओं वरीयताओं में चिंतित हो, सिर्फ उन्हें निम्नलिखित स्निपेट का उपयोग कर ओवरराइड ...

MailItem.DeleteAfterSubmit = false; // force storage to sent items folder (ignore user options) 
Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); 
if (sentFolder != null) 
    MailItem.SaveSentMessageFolder = sentFolder; // override the default sent items location 
MailItem.Save(); 
+0

@ सिल्वर निंजा - आपके उत्तर के लिए धन्यवाद, उस मंच पोस्ट में आइटम एड ईवेंट के बारे में कुछ बहुत ही उपयोगी जानकारी है। चीयर्स। –

संबंधित मुद्दे