[英]Resolving contact conflict in more than one Mailbox in Microsoft Outlook
我正在尝试解决Outlook 2010中的模糊联系人。我的Outlook配置了两个不同的邮箱,分别为XXX@domain1.com和XXX@domain2.com。 如果两个域中都存在特定用户(例如XXX),则Outlook会从默认通讯簿中解析该名称。 如何切换到另一个通讯簿(即domain2)并解决? 但是,如果该联系人在domain1中不存在(即默认),则我的程序可以从domain2中获取该联系人。 请为我建议一种单独解决来自特定域的收件人的方法。
我的应用程序在C#中,我使用Microsoft Outlook Library 14.0
如果使用“ 赎回”是一个选项,则可以使用RDOAddressList .ResolveName方法来解析针对特定GAL容器的名称。 可以从RDOSession.AddressBook或RDOExchangeAccount .GAL属性中检索RDOAddressList对象。 可以从RDOSession.Accounts集合中检索RDOExchangeAccount 。
VB:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set AddressEntry = Session.AddressBook.GAL.ResolveName("dmitry streblechenko")
MsgBox AddressEntry.SMTPAddress
C#:
Redemption.RDOSession session = new Redemption.RDOSession();
session.MAPIOBJECT = Application.Session.MAPIOBJECT; //if you already have a pointer to the Outlook.Application object, Or call Logon
Redemption.RDOAddressEntry addressEntry = session.AddressBook.GAL.ResolveName("dmitry streblechenko");
MessageBox.Show(addressEntry.SMTPAddress);
Outlook对象模型不提供任何属性或方法来根据特定地址簿解析收件人。 收件人类的唯一可能方法是Resolve或ResolveAll 。
私人Redemption.RDOAddressEntry ResolveRecipientsRDO(字串名称){
Redemption.RDOAddressEntry raddressEntry = null;
try
{
string displayName = (string)accountDisplayNames[domainSelect.Text];
Microsoft.Office.Interop.Outlook.Application app = new Outlook.Application();
Redemption.RDOSession session = new Redemption.RDOSession();
session.MAPIOBJECT = app.Session.MAPIOBJECT;
//if you already have a pointer to the Outlook.Application object, Or call Logon
RDOStores stores = session.Stores;
RDOAccounts accounts = session.Accounts;
if (stores.DefaultStore.Name.ToLower().Equals(displayName.ToLower()))
{
WriteLog("Default account:" + stores.DefaultStore.Name.ToLower());
// MessageBox.Show("Outlook's Default account name: " + stores.DefaultStore.Name.ToLower() + " matches with selected domain " + displayName);
raddressEntry = session.AddressBook.ResolveName(name, true);
}
else
{
MessageBox.Show("The selected domain " + displayName + " is not Outlook's Default domain. Set this as default domain to resolve", "Default Mailbox Setting");
accounts.DisplayAccountList();
WriteLog("Default account:" + stores.DefaultStore.Name.ToLower());
raddressEntry = session.AddressBook.ResolveName(name, true);
}
}
catch(System.Exception e)
{
MessageBox.Show("Resolving error:" + e.GetBaseException());
WriteLog("*******inside findAndWriteDirectReporteesintoPDF******");
}
return raddressEntry;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.