这是我的代码:
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 ('test@testing.com');
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('test@test.com');
sItem.Attachments.Add('C:\windows\win.ini');
sItem.save;
SItem.send;
outlookapplication1.Disconnect;
end;
这也给出了同样的错误。AV的地址有什么神奇之处?它必须是解决方案的线索。
TIA,
诺姆