我試圖使用Microsoft Outlook 15.0對象庫DLL讀取Microsoft Outlook聯繫人,它在本地工作;當涉及到客戶端時,我們不知道客戶端使用的是什麼版本的Outlook。如何閱讀每個客戶端是否具有不同版本的Outlook?使用任何Microsoft Outlook版本在C#中閱讀Outlook聯繫人
我想閱讀與使用C#的任何版本的Microsoft Outlook版本的聯繫。
如果您有任何開源代碼,它會有很大的幫助。
請看我的代碼,並幫助我在哪裏做錯了。
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Runtime.InteropServices;
using MsOutlook = Microsoft.Office.Interop.Outlook;
namespace Test
{
public class OutlookMailManager : IDisposable
{
public OutlookMailManager() { }
/// <summary>
/// Get MailContacts From Google (Gmail) using the provided username and password.
/// </summary>
/// <param name="maxEnries">Total number of entries to return</param>
/// <returns>The addressbook entries</returns>
public string GetOutlookMailContacts(int maxEnries)
{
MsOutlook.ApplicationClass OutlookApplication = new MsOutlook.ApplicationClass();
MsOutlook.NameSpace outlookNameSpace = OutlookApplication.GetNamespace("MAPI");
MsOutlook.MAPIFolder contactsCollection = outlookNameSpace.GetDefaultFolder(MsOutlook.OlDefaultFolders.olFolderContacts);
Microsoft.Office.Interop.Outlook.Items folderItems = contactsCollection.Items;
string rtnStr = "";
if (folderItems.Count > 0)
{
for (int i = 1; folderItems.Count >= i; i++)
{
object contactObj = folderItems[i];
if (contactObj is MsOutlook.ContactItem)
{
MsOutlook.ContactItem contact = (MsOutlook.ContactItem)contactObj;
rtnStr += contact.FullName + " (" + contact.BusinessTelephoneNumber + ")\n";
}
Marshal.ReleaseComObject(contactObj);
if (i == maxEnries) break;
}
}
Marshal.ReleaseComObject(folderItems);
Marshal.ReleaseComObject(contactsCollection);
Marshal.ReleaseComObject(outlookNameSpace);
return rtnStr;
}
}
}
尤金喜感謝您的發佈,目前我只使用PIA,它只針對某些客戶。可能是爲什麼它不在其他客戶上工作的問題。 – Sam
@Sam這些客戶端上產生的錯誤消息是什麼?拋出的完整異常是什麼?如果你沒有記錄它,你應該。沒有它,人們只能猜測他們的版本可能比你使用的PIA版本更早,或者可能存在一點點問題(x86 vs x64) –