साझा कैलेंडर तक आप Outlook में अन्य कैलेंडर नोड के अंतर्गत कैलेंडर मतलब है?
इसलिए इन आइटम NavLinks कि एक मेलबॉक्स NonIPMSubtree (रूट) के अधीन है, जिसमें आम दृश्य फ़ोल्डर में जमा हो जाती है कर रहे हैं http://msdn.microsoft.com/en-us/library/ee157359(v=exchg.80).aspx देखते हैं। आप मेलबॉक्स से NavLinks प्राप्त करने के लिए ईडब्ल्यूएस का उपयोग कर सकते हैं और मेलबॉक्स के X500 पते को प्राप्त करने के लिए PidTagWlinkAddressBookEID विस्तारित संपत्ति का उपयोग कर सकते हैं, इन लिंक का संदर्भ लें और उसके बाद किसी SMTP पते को हल करने के लिए नाम हल करें। तो फिर तुम सब करने की जरूरत है बाध्य करने के लिए उस फ़ोल्डर जैसे
static Dictionary<string, Folder> GetSharedCalendarFolders(ExchangeService service, String mbMailboxname)
{
Dictionary<String, Folder> rtList = new System.Collections.Generic.Dictionary<string, Folder>();
FolderId rfRootFolderid = new FolderId(WellKnownFolderName.Root, mbMailboxname);
FolderView fvFolderView = new FolderView(1000);
SearchFilter sfSearchFilter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Common Views");
FindFoldersResults ffoldres = service.FindFolders(rfRootFolderid, sfSearchFilter, fvFolderView);
if (ffoldres.Folders.Count == 1)
{
PropertySet psPropset = new PropertySet(BasePropertySet.FirstClassProperties);
ExtendedPropertyDefinition PidTagWlinkAddressBookEID = new ExtendedPropertyDefinition(0x6854, MapiPropertyType.Binary);
ExtendedPropertyDefinition PidTagWlinkGroupName = new ExtendedPropertyDefinition(0x6851, MapiPropertyType.String);
psPropset.Add(PidTagWlinkAddressBookEID);
ItemView iv = new ItemView(1000);
iv.PropertySet = psPropset;
iv.Traversal = ItemTraversal.Associated;
SearchFilter cntSearch = new SearchFilter.IsEqualTo(PidTagWlinkGroupName, "Other Calendars");
// Can also find this using PidTagWlinkType = wblSharedFolder
FindItemsResults<Item> fiResults = ffoldres.Folders[0].FindItems(cntSearch, iv);
foreach (Item itItem in fiResults.Items)
{
try
{
object GroupName = null;
object WlinkAddressBookEID = null;
// This property will only be there in Outlook 2010 and beyond
//https://msdn.microsoft.com/en-us/library/ee220131(v=exchg.80).aspx#Appendix_A_30
if (itItem.TryGetProperty(PidTagWlinkAddressBookEID, out WlinkAddressBookEID))
{
byte[] ssStoreID = (byte[])WlinkAddressBookEID;
int leLegDnStart = 0;
// Can also extract the DN by getting the 28th(or 30th?) byte to the second to last byte
//https://msdn.microsoft.com/en-us/library/ee237564(v=exchg.80).aspx
//https://msdn.microsoft.com/en-us/library/hh354838(v=exchg.80).aspx
String lnLegDN = "";
for (int ssArraynum = (ssStoreID.Length - 2); ssArraynum != 0; ssArraynum--)
{
if (ssStoreID[ssArraynum] == 0)
{
leLegDnStart = ssArraynum;
lnLegDN = System.Text.ASCIIEncoding.ASCII.GetString(ssStoreID, leLegDnStart + 1, (ssStoreID.Length - (leLegDnStart + 2)));
ssArraynum = 1;
}
}
NameResolutionCollection ncCol = service.ResolveName(lnLegDN, ResolveNameSearchLocation.DirectoryOnly, false);
if (ncCol.Count > 0)
{
FolderId SharedCalendarId = new FolderId(WellKnownFolderName.Calendar, ncCol[0].Mailbox.Address);
Folder SharedCalendaFolder = Folder.Bind(service, SharedCalendarId);
rtList.Add(ncCol[0].Mailbox.Address, SharedCalendaFolder);
}
}
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
}
return rtList;
}
चीयर्स ग्लेन
स्रोत
2014-05-21 04:12:02
वाह, यह कमाल है। मैं इसे अभी आज़मा रहा हूं। धन्यवाद! – synic
यह साझा कैलेंडर फ़ोल्डर प्राप्त करने के लिए बहुत अच्छा काम करता है। लेकिन जब मैं साझा कैलेंडर में आइटम तक पहुंचने का प्रयास करता हूं तो अब मुझे परेशानी हो रही है। असल में मुझे मुफ्त/व्यस्त स्थिति प्राप्त करने की आवश्यकता है। मैं 'सेवा पर कॉल कर रहा था। ढूँढें ITems (SharedCalendaFolder.Id, iCalenderview)' और मुझे "एक्सेस अस्वीकार कर दी गई है। प्रमाण-पत्र जांचें और पुनः प्रयास करें।" त्रुटि। लेकिन आउटलुक वेब ऐप में मैं साझा कैलेंडर ईवेंट देख सकता हूं। – Dimuthu
कैलेंडर तक पहुंचने के लिए आपको कम से कम कैलेंडर तक पहुंच की आवश्यकता होगी, मैं कहूंगा कि इस समय आपके पास केवल फ्रीबुसी अधिकार हैं, इसलिए आप उस मामले में केवल GerUseravailiblity ऑपरेशन का उपयोग कर सकते हैं जब तक कि आप अपने खाते के कैलेंडर फ़ोल्डर में अधिक अधिकार नहीं देते। –