使用delphi本身的OutlookApplication控件不仅没有帮助文档,网上也找不到相关的说明。
更何况调用的时候还出现没有注册类别。不知道有没有人做过这方面,或许用其他的方法?

解决方案 »

  1.   

    调用时没有注册类别是由于OUTLOOK这个COM没有注册,一般重新修复一下可以解决。给你转一篇老帖子:Outlook中添加联系人Michael Klemm : http://www.swissdelphicenter.ch/torry/showcode.php?id=1845uses   ComObj, Variants, SysUtils;  type   TContact = record     LastName: string;     FirstName : string;     Company : string;     // ###  Further properties. See MSDN   end;     //------------------------------------------------------------------------------ {:Add outlook contact  @param ContactFolderPath The contact path. E.g.: '' for default contact folder,   'SubFolder\Sub2\Test' for subfolders @param Contact The contact informations. @author 19.09.2003 Michael Klemm}   //------------------------------------------------------------------------------ procedure OutlookAddContact(ContactFolderPath : string; Contact : TContact); const   olFolderContacts = $0000000A; var   Outlook : OleVariant;   NameSpace : OleVariant;   ContactsRoot : OleVariant;   ContactsFolder : OleVariant;   OutlookContact : OleVariant;   SubFolderName : string;   Position : integer;   Found : boolean;   Counter : integer;   TestContactFolder : OleVariant; begin   // Connect to outlook   Outlook := CreateOleObject('Outlook.Application');   // Get name space   NameSpace := Outlook.GetNameSpace('MAPI');   // Get root contacts folder   ContactsRoot := NameSpace.GetDefaultFolder(olFolderContacts);   // Iterate to subfolder   ContactsFolder := ContactsRoot;   while ContactFolderPath <> '' do   begin     // Extract next subfolder     Position := Pos('\', ContactFolderPath);     if Position > 0 then     begin       SubFolderName := Copy(ContactFolderPath, 1, Position - 1);       ContactFolderPath := Copy(ContactFolderPath, Position + 1, Length(ContactFolderPath));     end     else     begin       SubFolderName := ContactFolderPath;       ContactFolderPath := '';     end;     if SubFolderName = '' then       Break;     // Search subfolder     Found := False;     for Counter := 1 to ContactsFolder.Folders.Count do     begin       TestContactFolder := ContactsRoot.Folders.Item(Counter);       if LowerCase(TestContactFolder.Name) = LowerCase(SubFolderName) then       begin         ContactsFolder := TestContactFolder;         Found := True;         Break;       end;     end;     // If not found create     if not Found then       ContactsFolder := ContactsFolder.Folders.Add(SubFolderName);   end;   // Create contact item   OutlookContact := ContactsFolder.Items.Add;   // Fill contact information   OutlookContact.FirstName := Contact.FirstName;   OutlookContact.LastName := Contact.LastName;   OutlookContact.CompanyName := Contact.Company;    // ### Further properties    // Save contact   OutlookContact.Save;   // Disconnect from outlook   Outlook := Unassigned; end; 
      

  2.   

    先關注下樓上的,也可參考這個http://blog.csdn.net/beyond748/archive/2007/08/31/1767336.aspx