从 Outlook 导入联系人

使用 Office/Outlook 对象模型从 Outlook 导入项目的示例源代码。

示例图像 - 最大宽度为 600 像素

介绍

Outlook 已成为个人信息管理软件中的事实上的标准。几乎每个人都使用这个软件来管理他们的需求。需要以编程方式操作存储在 Outlook 中的信息。微软为此提供了 Outlook 对象模型。仔细查看 MSDN 上的示例会发现几乎所有示例都在 Visual Basic 中。(不那么差;-)) C++ 程序员应该为此做什么?由于 Outlook 对象模型是 COM 接口的集合,因此任何符合 COM 的语言都可以使用它。此示例可以从 Outlook 中的任何联系人文件夹导入联系人。

要在 C++ 中使用 Office/Outlook 对象,需要导入以下文件...

C++
//For Office XP
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids
#import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace
    exclude("_IRecipientControl",    "_DRecipientControl");

  

C++

//For Office 2000 
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids
#import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace
    exclude("_IRecipientControl", "_DRecipientControl");

  

C++

//Code to import Contacts...

_ApplicationPtr pApp;
_ItemsPtr pItems;
MAPIFolderPtr pFolder;
_ContactItemPtr pContact;
  
HRESULT hr;

try
{

  hr=pApp.CreateInstance(__uuidof(Application));
  if (FAILED(hr))
  {
    MessageBox("Unable to instantiate Outlook.",
               "Outlook Error",MB_OK);
    return;
  }

  if (m_Option.GetCheck()) //default outlook contacts folder
  {
    pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->
                    GetDefaultFolder(olFolderContacts);
    if (pFolder==NULL)
    {
      MessageBox("Could not find default contacts folder.",
                 "Outlook Error");
      return;
    }
    
  }
  else //display folder selection window
  {
    pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->PickFolder();
    if (pFolder==NULL)
      return;

    if (pFolder->GetDefaultItemType()!=olContactItem)
    {
      MessageBox("Select folder is not a Contact folder.",
                 "Outlook Contacts");
      return;
    }
  }

  pItems=pFolder->GetItems();
  if (pItems==NULL)
  {
    MessageBox("Unabel to get Contact Items.",
               "Outlook Error");
    return;
  }

  pContact=pItems->GetFirst();


  m_ContactList.ResetContent();

  while(1)
  {
    if (pContact==NULL)
      break;
    CString strTemp;
    strTemp=(char *)pContact->GetFullName();
    strTemp=strTemp + "<";
    strTemp=strTemp + (char *)pContact->GetEmail1Address();
    strTemp=strTemp + ">";
    m_ContactList.AddString(strTemp);

    pContact=pItems->GetNext();
  }

}
catch(_com_error &e)
{
  MessageBox((char *)e.Description());
}

  

此示例导入​​联系人信息,但稍加修改即可使其也从 Outlook 导入任何其他信息。这包括约会项目、电子邮件、便笺、任务等。例如,要从日历文件夹中导入约会项目,只需要创建一个 _AppointmentItemPtr 智能指针类的对象,而不是 _ContactItemPtr。

Outlook是最常用的邮箱收发软件,首次安装配置Outlook请参阅博文《首次安装配置Outlook流程详解》。

安装配置过程中可能会出现无法与Microsoft exchange连接的问题,其解决方法参见博文《完美解决“Outlook 与 Microsoft Exchange 的连接不可用,Outlook 必须联机或已连接才能完成此操作”的问题

 

posted @ 2021-06-29 23:50  scanp002  阅读(361)  评论(0编辑  收藏  举报