使用Ruby查找outlook中的所有联系人

时间:2013-07-22 12:35:19

标签: ruby outlook contact

我使用tidesdk制作桌面应用,与MS Outlook连接。 应用程序运行良好,但......

当我从outlook获取联系人时,我会使用它。

def getContacts()

        #ouverture de l'application outlook
        begin
            application = WIN32OLE.new('Outlook.Application')
        rescue Exception=>e
            alert("An error occurred while opening outlook, no contacts will be loaded");
            return false
        end

        mapi = application.GetNameSpace('MAPI')

        contacts = mapi.GetDefaultFolder(10).Items
        contacts.each do |contact|

            begin
                puts contact.FullName
                puts contact.Email1Address
                puts contact.BusinessTelephoneNumber
                addContactApp(contact.FullName, contact.Email1Address)
            rescue Exception=>e
                alert("An error occurred while loading contacts");
            end
        end
    end

那也在工作......但我的联系人列表中有多个文件夹,我想从MS Outlook中的所有文件夹中获取所有联系人。是否可以获取所有联系人文件夹?

3 个答案:

答案 0 :(得分:2)

Namespace.Folders集合开始,递归处理每个文件夹及其子文件夹(MAPIFolder.Folders),检查MAPIFolder.DefaultItemType属性。

答案 1 :(得分:1)

这完全不是我想到的:您只处理默认“联系人”文件夹的子文件夹中的项目。如果您的联系人与收件箱或联系人文件夹本身处于同一级别的文件夹,则不会处理它 - 您需要从Namespace.Folders开始并检查DefaultItemType属性以确保您只处理联系人文件夹。其次,你假设你只有联系人。如果您有一个通讯组列表,您的代码将引发错误,因为DistListItem对象不支持FullName / Email1Address / etc.属性。检查Class属性(由所有OOM对象公开)是否等于40(OlObjectClass.olContact)。

答案 2 :(得分:0)

谢谢你的答案!!我试过这个并且工作正常!

mapi = application.GetNameSpace('MAPI')
        contacts_all_folders = mapi.GetDefaultFolder(10).Folders
        contacts_all_folders.each do |folder|           
            var myfolder = mapi.GetDefaultFolder(10).Folders(folder.Name).Items
            myfolder.each do |contact|
                begin
                    puts contact.FullName
                    puts contact.Email1Address
                    puts contact.BusinessTelephoneNumber
                    addContactApp(contact.FullName, contact.Email1Address)
                rescue Exception=>e
                    alert("An error occurred while loading contacts "+e);
                end
            end
        end