11

क्या यह लॉग इन उपयोगकर्ता के अलावा अन्य एक्सचेंज खातों के फ़ोल्डर्स और आइटम्स तक पहुंच सकता है?एक्सचेंज वेब सर्विसेज प्रबंधित एपीआई: अन्य उपयोगकर्ताओं की वस्तुओं तक पहुंच

क्या मैं इसे एक्सचेंज वेब सेवा प्रबंधित API के माध्यम से कर सकता हूं?

+0

क्या आप सीधे ईडब्ल्यूएस का उपयोग कर रहे हैं या आप इसे ईडब्ल्यूएस प्रबंधित API के माध्यम से उपयोग कर रहे हैं? –

+0

@ अल्फ्रेड मायर्स मैं ईडब्लूएस प्रबंधित एपीआई – Luke

उत्तर

14

हां यह संभव है, लेकिन आपको अन्य उपयोगकर्ता के पासवर्ड को जानना चाहिए या कुछ तरीकों से इस क्रेडेंशियल्स (NetworkCredential ऑब्जेक्ट) को पकड़ना चाहिए। आप कोड की खासियत पहले लाइनों हो सकता है

ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1); 
myService.Credentials = new NetworkCredential ("[email protected]", "[email protected]"); 

ताकि आप खाता है जो वर्तमान उपयोगकर्ता के रूप में अन्य के साथ एक्सचेंज सर्वर वेब सेवा का उपयोग कर सकते हैं। अधिक जानकारी के लिए ExchangeService object विवरण देखें।

यदि आप एक व्यवस्थापक हैं तो आप उपयोगकर्ता को impersonation by SMTP address बना सकते हैं।

+0

@ अल्फ्रेड मायर्स और @ उपयोगकर्ता 457261 का उपयोग करता हूं: आपने कोई टिप्पणी नहीं लिखी है। क्या वह जानकारी है जिसे मैंने लिखा है जिसे आपको चाहिए? – Oleg

+0

आपके उत्तर के लिए धन्यवाद, लेकिन मैं हर पासवर्ड को जानने के बिना एक रास्ता तलाश रहा था। एक सुपरसियर का उपयोग करने की तरह जो सभी खातों तक पहुंच सकते हैं। – Luke

+2

@Luke: मेरे उत्तर से अंतिम वाक्य वर्णन करते हैं कि यह कैसे करें। "सुपरडमिन" के रूप में आप किसी भी उपयोगकर्ता को अपने पासवर्ड के बारे में जानकारी के बिना केवल SMTP पते द्वारा प्रतिरूपण कर सकते हैं। Http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx को एक और बार देखें। – Oleg

0

मैं प्रत्येक उपयोगकर्ता के लिए लॉगिन के बजाय प्रतिरूपण का उपयोग करने का सुझाव देता हूं। प्रतिरूपण के माध्यम से आप उपयोगकर्ताओं का प्रतिरूपण कर सकते हैं। यह पूर्ण पहुंच की तरह नहीं है। पूर्ण पहुंच व्यवहार पर है, प्रतिरूपण कार्य करता है।

प्रतिरूपण का एक पूर्व है कि आपके पास x उपयोगकर्ता नाम और पासवर्ड होने के बजाय एक उपयोगकर्ता नाम और पासवर्ड है।

आप इस तरह की तरह प्रतिरूपण का उपयोग कर सकते हैं:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain); 
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userToImpersonate); 

एक उपयोगकर्ता किसी और को एक्सेस है जब, आप अन्य उपयोगकर्ता के फ़ोल्डर पहुँच सकते हैं। उदाहरण के लिए: व्यक्ति ए का प्रतिरूपण किया जाएगा और व्यक्ति बी

4

पासवर्ड को जानना गलत है और प्रतिरूपण (इन दिनों) का उपयोग करना गलत है।

यहां आप यह कैसे करते हैं।

 ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
     //CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED 
     _service.Credentials = new WebCredentials(username, password); 
     _service.Url = new Uri(serviceURL); 

     SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection(); 
     searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1))); 
     searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2))); 
     ItemView view = new ItemView(50); 
     view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End); 

     //THIS NEXT LINE!!! 
     var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("[email protected]")); 
     var appointments = _service.FindItems(calendarSearch, searchFilter, view); 
+0

यह एक बेहतर जवाब है, ठीक वही है जो मैं इतने लंबे समय से ढूंढ रहा हूं – Nacht

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