0

我正在使用 jacob 库。使用 jacob 库并按照教程,我可以在 Outlook 中添加联系人。现在我想使用 jacob 删除和更新该联系人。我想知道有什么方法可以使用 jacob 删除 Outlook 联系人。

我正在使用此代码在 Outlook 中添加联系人。这里的电子邮件 ID 是唯一 ID。

        ActiveXComponent axOutlook = new ActiveXComponent("Outlook.Application");
        Dispatch oOutlook = axOutlook.getObject();
        Dispatch createContact = Dispatch.call((Dispatch)oOutlook, "CreateItem", new Variant(2)).toDispatch();

        Dispatch.put(createContact,"LastName",cont.getLastName());
        Dispatch.put(createContact,"FirstName",cont.getFirstName());
        Dispatch.put(createContact,"Title",cont.getTitle());
        Dispatch.put(createContact,"Email1Address",cont.getPrimaryEmail());

        Dispatch.call(createContact, "Save");
4

1 回答 1

1

JACOB 是 COM IDispatch 调用的一个非常薄的包装器,因此如果您想知道如何在 Outlook 中执行任何特定任务,那么起点将是官方的Outlook 对象模型文档

您的特殊情况,查找和删除联系人,是通过

namespace = outlookApplication.GetNamespace("MAPI")
contactsFolder = namespace.GetDefaultFolder(olFolderContacts)
contact = contactsFolder.items.find( "[Email1Address] = 'mail@server.com' )

if (contact != null)
{
    contact.Delete
}

工作的后半部分是将这些调用转换为 JACOB 语言。假设您已经找到了您的联系人项目,代码将类似于

ActiveXComponent outlookApplication = new ActiveXComponent("Outlook.Application");
Dispatch namespace = outlookApplication.getProperty("Session").toDispatch();

Dispatch contactsFolder = Dispatch.call(namespace, "GetDefaultFolder", new Integer(10)).toDispatch();
Dispatch contactItems = Dispatch.get(contactsFolder, "items");
String filter = String.format("[Email1Address] = '%s'", cont.getPrimaryEmail());
Dispatch contact = Dispatch.call(contactItems, "find", filter);

if (contact != null)
{
    Dispatch.call(contactItem, "Delete");
}
于 2013-06-28T10:54:01.813 回答