我正在使用Delphi2010。 当我使用Outlook 2003 SP3运行代码时,我没有错误,但在另一台具有outlook2007的PC上,我收到错误“无效功能错误”。
const
olMailItem = 0;
olFolderInbox = $00000006;
var
Outlook: OleVariant;
oNameSpace: OleVariant;
oFolder: Olevariant;
oMailItem: Variant;
oUserProperty: Olevariant;
begin
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
oNameSpace := Outlook.GetNamespace('MAPI') ;
oFolder:= oNameSpace.GetDefaultFolder(olFolderInbox);
oMailItem := Outlook.CreateItem(olMailItem);
...
oUserProperty:= oMailItem.UserProperties.Add('RetrieveCode', 1); //--> get error on Outlook2007
oUserProperty.Value:=ARetrieveCode;
...
end;
当我使用兑换时,我得到了与Outlook2007相同的错误 有人能指出正确的方向来解决这个问题吗?
我用eurekalog抓住错误:
; ComObj (Line=0 - Offset=0)
; --------------------------
00538469 mov eax, dword ptr [EOleSysError]
0053846E call ComObj
00538473 mov esi, eax
00538475 cmp dword ptr [ebp-$04], +$00
00538479 jz ComObj
0053847B push dword ptr [ebp-$04]
0053847E mov eax, esi
00538480 jmp System
00538485 jmp ComObj
00538487 mov eax, esi
00538489 call System ; <-- EXCEPTION
0053848E xor eax, eax
00538490 pop edx
00538491 pop ecx
00538492 pop ecx
00538493 mov fs:[eax], edx
00538496 push $005384B0 ; '^[‹å]Â.'
0053849B lea eax, [ebp-$10]
0053849E mov edx, $00000003 ; ''...
005384A3 call System
005384A8 ret
答案 0 :(得分:0)
我已将代码从后期绑定更改为早期绑定,以检查是否收到相同的错误。 我将库导入OutLook_TLB.pas并在单位的使用中添加了Outlook_TLB。
uses
...,
Outlook_TLB;
function SendOutLookMail ...
var
...
MyOutlook: Outlook_TLB.OutlookApplication;
MyMailItem: Outlook_TLB.MailItem;
MyUserProperty: Outlook_TLB.UserProperty;
begin
...
MyOutlook:= Outlook_TLB.CoOutlookApplication.Create;
MyMailItem:= MyOutlook.CreateItem(olMailItem)as MailItem;
MyUserProperty:= MyMailItem.UserProperties.Add('RetrieveCode', 1, EmptyParam, EmptyParam) as UserProperty;
MyUserProperty.Value:= ARetrieveCode;
MyMailItem.Recipients.Add(AFrom);
MyMailItem.To_:= ATo;
MyMailItem.Subject := ASubject+' early/late-bound';
MyMailItem.Body := ABody;
MyMailItem.Send;
end;
当我运行代码时,我在使用Outlook2007的电脑上没有任何错误。 所以早期绑定到对象修复了我的问题。