gpt4 book ai didi

delphi - RobuSTLY 通过 Outlook 和 OLE 发送电子邮件

转载 作者:行者123 更新时间:2023-12-03 02:37:34 25 4
gpt4 key购买 nike

我正在使用 OLE 通过 Outlook 发送电子邮件。我使用的代码是:

procedure SendOutlookMail;
const
olMailItem = 0;
var
OKToUse: boolean;
Outlook: OleVariant;
vMailItem: variant;
begin
OKToUse := false;
try
Outlook := GetActiveOleObject('Outlook.Application');
OKToUse := true;
except
try
Outlook := CreateOleObject('Outlook.Application');
OKToUse := true;
except
on e: exception do begin
ShowMessage(e.Message);
end;
end;
end;

if VarIsType(Outlook, varDispatch) then
ShowMessage('Outlook is varDispatch')
else
ShowMessage('Outlook is ***NOT*** varDispatch');

if OKToUse then begin
vMailItem := Outlook.CreateItem(olMailItem);
vMailItem.Recipients.Add('mike@example.com');
vMailItem.Subject := 'What a wonderful test email';
vMailItem.Body := 'This is a test --> how amazing';
vMailItem.Send;
end;

VarClear(Outlook);
end;

这已经被无耻地从几个不同的SO问题中剔除了 - 感谢所有人。

我遇到的代码问题是当 Outlook 安装在 PC 上但已关闭时。打开 Outlook 时,我会看到一个消息框,显示“Outlook 是 varDispatch”,并且发送和接收邮件消息。当 Outlook 关闭时,我收到相同的消息框“Outlook is varDispatch”,但随后“应用程序中发生错误”,并且我的应用程序突然关闭。

有两个问题:

1) 如何检测 Outlook 是否正在运行? OKToUse 设置为 true 的事实似乎不是正确的方法。

2) 如果 Outlook 未运行,如何启动它并在发送电子邮件后将其关闭?

我正在使用 Delphi 10.1 Berlin 并尝试连接到 Outlook 2007。

最佳答案

在调用CreateItem之前添加以下内容

vNS := Outlook.GetNamespace('MAPI');
vNS.Logon;

关于delphi - RobuSTLY 通过 Outlook 和 OLE 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38849937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com