2009-04-30 20 views
6

मुझे बीपीओएस में एक्सचेंज वेब सेवा का आह्वान करके कैलेंडर जानकारी पुनर्प्राप्त करने की आवश्यकता है। मैं जितना संभव हो उतना डेटा पुनर्प्राप्त करने के लिए PropertySet के साथ CalendarView का उपयोग कर रहा हूं। हालांकि, संपत्ति सेट सीमित प्रतीत होता है। मुझे कैलेंडर की नियुक्ति करने वाले EmailAddress की आवश्यकता है, इसलिए मैंने सोचा कि मैं PropertySet में AppointmentSchema.Organizer का उपयोग कर सकता हूं।एक्सचेंज वेब सर्विसेज और प्रॉपर्टी सेट

पूर्ण नियुक्ति प्राप्त करते समय मैं appt.Organizer.EmailAddress के माध्यम से ई-मेल प्राप्त कर सकता हूं। लेकिन Organizer.EmailAddress के नीचे दिए गए कोड के साथ हमेशा शून्य है। मैंने ट्रेस को सक्षम किया है और इसे चेक किया है और केवल Organizer.Name संपत्ति भेजी गई है, और कुछ नहीं। PropertySet का उपयोग करते समय EmailAddress कैसे प्राप्त करें इस पर कोई समाधान है?

CalendarView view = new CalendarView(dtFrom, dtTo); 
view.PropertySet = new PropertySet(ItemSchema.Subject); 
view.PropertySet.Add(ItemSchema.Id); 
view.PropertySet.Add(AppointmentSchema.Start); 
view.PropertySet.Add(AppointmentSchema.End); 
view.PropertySet.Add(AppointmentSchema.Organizer); // This should contain EmailAddress but it doesn't 

Mailbox mailbox = new Mailbox("[email protected]"); 
FolderId id = new FolderId(WellKnownFolderName.Calendar, mailbox); 
CalendarFolder folder = CalendarFolder.Bind(service, id); 
FindItemsResults<Appointment> findResults = folder.FindAppointments(view); 

उत्तर

1

के रूप में सबसे अच्छा के रूप में मैं EWS यह पता लगाने में सफल रहे हैं एक छोटे से गाड़ी जब यह दोनों आयोजक के लिए नियुक्ति में और "EmailMessage.From" की तरह अन्य बातों के लिए पूर्ण EmailAddress विवरण को आबाद करने के लिए आता है। जब आप एकाधिक आइटम के लिए कोई प्रश्न पूछते हैं, तो आपको ईमेल एड्रेस गुणों को पूरी तरह से पॉप्युलेट नहीं किया जाता है। जैसे API का उपयोग करके चाहते:

Folder.FindItems 
ExchangeService.FindAppointments 

मुझे लगता है कि EmailAddress क्षेत्रों में केवल प्रदर्शन नाम आबादी वाले हो जाता है।

ईमेल एड्रेस पूरी तरह से पॉप्युलेट प्राप्त करने के लिए मुझे लगता है कि मुझे विशिष्ट आइटम को लोड/बाध्य करने और प्रासंगिक ईमेल एड्रेस संपत्ति निर्दिष्ट करने की आवश्यकता है, उदा। आपके मामले में नियुक्ति Schema.Organizer। इसलिए यद्यपि आप लोड करने के लिए बिल्कुल वही संपत्ति निर्दिष्ट करते हैं, फिर भी आप थोक क्वेरी के बजाय एक आइटम कॉल का उपयोग करके लोड हो रहे हैं। जैसे का उपयोग करते हुए:

ServiceObject.Load 

कौन सा दोनों नियुक्ति एवं EmailMessage के लिए उपलब्ध है के रूप में वे दोनों ServiceObject बंद निकाले जाते हैं। आइटम का उपयोग करना। निर्धारित उचित संपत्ति सेट के साथ बाध्य भी काम करना चाहिए।

एक अलग रूप में के रूप में मैं इस पता लगा EwsEditor के लिए कोड है जो यहाँ उल्लेख किया है पर देख रहे हैं:

http://blogs.msdn.com/webdav_101/archive/2009/11/10/ews-has-more-happy-now-ews-managed-api-and-ewseditor.aspx

EwsEditor की उपयोगिता काफी sucky है, और कोड यह पता लगाने की कुछ trawling लेता है, लेकिन कम से कम यह कई एपीआई व्यायाम करने के उदाहरण दिखाता है।

6

यह काम करना चाहिए (मेरे लिए करता है):

service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start); 
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties); 
0
service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start); 
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties); 

यह मेरे लिए काम किया।

+0

क्या यह सिर्फ @Jordan द्वारा उत्तर की एक प्रति नहीं है? यदि आप यह कहने की कोशिश कर रहे हैं कि उत्तर आपके लिए काम करता है, तो आपको उस संदेश को उस उत्तर पर टिप्पणी के रूप में पोस्ट करना चाहिए। – RenniePet

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