首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Outlook和OLE健壮地发送电子邮件

通过Outlook和OLE健壮地发送电子邮件
EN

Stack Overflow用户
提问于 2016-08-09 19:51:01
回答 1查看 1.1K关注 0票数 2

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

代码语言:javascript
运行
复制
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 is varDispatch“,并发送和接收了一封邮件。当Outlook关闭时,我收到相同的消息框"Outlook is varDispatch",但随后“应用程序中发生错误”,我的应用程序突然关闭。

所以有两个问题:

1)如何检测Outlook是否正在运行?将OKToUse设置为true似乎不是一种正确的方式。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 23:34:29

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

代码语言:javascript
运行
复制
vNS := Outlook.GetNamespace('MAPI');
vNS.Logon;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38849937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档