這裏是我的代碼:AV發送通過Outlook電子郵件和贖回時
const
olMailItem = 0;
var
olApp, OlNameSpace, OlItem, rdSafeItem, rdUtils: variant;
begin
olApp:= CreateOleObject ('Outlook.Application');
olNameSpace:= olApp.GetNamespace ('MAPI');
olNameSpace.Logon;
olItem:= olApp.CreateItem (olMailItem);
rdSafeItem:= CreateOleObject ('Redemption.SafeMailItem');
rdSafeItem.Item:= olItem;
rdSafeItem.Subject:= 'Testing';
rdSafeItem.attachments.Add ('c:\windows\win.ini');
rdSafeItem.Recipients.Add ('[email protected]');
rdSafeItem.Send;
rdUtils:= CreateOleObject ('Redemption.MAPIUtils');
rdUtils.DeliverNow;
olNameSpace.Logoff;
varclear (rdUtils);
varclear (rdSafeItem);
varclear (olItem);
varclear (olNameSpace);
varclear (olApp);
end;
的電子郵件發送後,我得到一個訪問衝突消息在地址A70D6D13(這個地址似乎是不變)。如果我用F8逐步完成整個過程,在'結束'語句之後,CPU窗口顯示在地址A70D6D13上,將所有內存顯示爲????。
我使用的是Delphi 7,Outlook 2003,Redemption 4.8.0.1184 此代碼缺少什麼?
編輯: 我發現了其他幾個代碼片斷通過Outlook/Redemption發送郵件。這是一個使用OutlookApplication服務器的片段。
begin
outlookapplication1.Connect;
NmSpace:= outlookapplication1.GetNamespace('MAPI');
NmSpace.Logon('', '', False, False);
oItem:= outlookapplication1.CreateItem(olMailItem);
sItem:= CreateOleObject('Redemption.SafeMailItem');
oItem.Subject:= 'my subject';
oItem.save;
sItem.Item:= oItem;
sItem.Recipients.Add('[email protected]');
sItem.Attachments.Add('C:\windows\win.ini');
sItem.save;
SItem.send;
outlookapplication1.Disconnect;
end;
這也給出了同樣的錯誤。什麼是AV的地址神奇?它必須是解決方案的線索。
TIA,
No'am
真的在這裏抓着吸管 - 你有沒有嘗試過在參數聲明中使用'OleVariant'類型,而不是'Variant'? – 2011-04-25 15:41:00
請在第二個代碼片段中顯示變量的聲明。 – crefird 2011-04-29 01:23:34
我剛剛嘗試了全新的Redemption 4.4安裝代碼片段,兩者都運行無誤。所以我懷疑你的問題可能與安裝Redemption及其類型lib有關。我建議你卸載Redemption,從磁盤上刪除dll和tlb的所有副本,然後重新安裝。 – crefird 2011-04-29 17:38:20