Outlook的Automation对象编程方法

【前沿技术RPA】 一文学会用UiPath实现自动检索电子邮件(Email Automation) 电子邮件是最早的一种数字通信方式,时至今日,许多业务流程仍由简单的电子邮件触发,我们总是习惯性地查看收件箱。如果我们可以把很多任务可以**实现自动化**,那么可以**节省我们宝贵的时间**。在本博文中,我们将探讨如何通过使用UiPath Studio和电子邮件相关活动来**快速可靠地处理电子邮件**。你在读一大堆邮件的时候,是不是想过“一定有更有效的方法来做这件事”?使用UiPath,您现在可以**轻松检索需要立即关注的电子邮件,处理或转发给适当的人**。 阅读详情
 Microsoft Outlook是可编程桌面信息管理程序。由于Microsoft Outlook本身不包含Visual Basic for Applications,但包括完整的类型库(type library)和Visual Basic Scripting Edition (VBScript),因此,Outlook对象编程可以采用两种方法:即VBScript脚本编程方法和Automation自动化编程方法。
VBScript脚本编程方法一般用于设计基于Outlook的本地化解决方案;而Automation(或OLE Automation)自动化编程方法则是用于建立用户自己的群件或邮件系统。可以使用早期绑定或后期绑定来开始一个Automation过程。本文将以后期绑定为例介绍在Delphi 5编程环境下,Outlook的Automation对象编程方法。
Outlook对象模型
Outlook基于Microsoft Exchange消息系统,更具体地说是基于MAPI(Messaging Application Programming Interface)来存储数据。若将Outlook安装到一台没有其他任何消息组件的计算机中,则安装程序会自动安装基于MAPI的Microsoft Exchange消息系统。
与任何一种消息系统一样,Microsoft Exchange使用一个层次化的文件夹(Folder)集合来存储数据。文件夹可以包含子文件夹(如收件箱、发件箱等)和条目(Item)(如邮件消息、约会、联系人和任务等)。正是由于这种不确定性,使Outlook编程与以文档为中心的其他Office产品编程相比更具挑战性,是所有Microsoft Office程序中对象编程最复杂的一种。Automation解决方案在很大程度上就是在这种文件夹层次中导航。
在Outlook对象模型中,Application对象包含NameSpace对象;NameSpace对象包含给定数据源(如MAPI消息库)中所有文件夹,即MAPIFolder对象集合;MAPIFolder对象包含该文件夹中所有条目对象;每个条目对象包含用于对其进行控制的可编程对象。
各对象含义如下:
●Application对象是整个模型的根对象,由CreateOleObject或GetActiveOleObject 函数返回;
●NameSpace对象代表任何可识别数据源,如MAPI消息库;
●Folders对象集合包括指定消息库(或任何可识别数据源)及其下级文件夹中所有的MAPIFolder文件夹对象;
●Items对象集合包括指定文件夹中所有Item条目对象;
●Explorer对象用于显示一个文件夹的窗口;
●Inspector对象用于显示一个条目的窗口。
Outlook对象编程步骤
1.在Delphi 5中,采用后期绑定来初始化一个Automation过程时,建议引用outlook8.pas单元,该单元包括Outlook类型库中所用常量定义。
2.建立一个Application类的实例。
3.调用GetNamespace过程指定要使用的名字空间。
若使用后期绑定,则所有对象变量均必须为Variant类型,如OutlookApplication, OutlookNameSpace等。
OutlookNameSpace:=Outlook.GetNamespace
(‘MAPI’);
4.调用Outlook名字空间的Logon 方法登记到邮件系统。该方法的四个参数的含义分别为Microsoft Exchange Profile文件名、口令、是否显示标准登录对话框、是否建立一个新的Microsoft Exchange会话。例如:  
OutlookNameSpace.Logon(ProfileStr, PasswordStr, False, True);
5.调用Outlook名字空间的GetDefaultFolder方法返回所请求的默认的MapiFolder文件夹对象(即MAPI名字空间内的一个文件夹)。例如,将默认的Contacts文件夹对象赋给OutlookFolder变量的方法如下:
OutlookFolder := OutlookNameSpace.
GetDefaultFolder(olFolderContacts);
又如,下列语句可以显示发件箱文件夹名称:
Caption := Variant(OutlookNameSpace.
GetDefaultFolder(olFolderOutbox));
此外,还可以使用文件夹集合Folders(索引)方法查找文件夹。这是查找自定义、非标准文件夹的唯一方法。如:
urgentFolder := olMAPI.Folders(“Mailbox - Zhang Chunming”).Folders(“Urgent”);
下面例子显示收件人ZhangChunming的共享日历文件夹:
OutlookReciepientItem := OutlookNameSpace.
CreateRecipient(‘ZhangChunming’);
OutlookReciepientItem.Resolve;
if OutlookReciepientItem.Resolved <> 0 then
begin
OutlookFolder := OutlookNameSpace.
GetSharedDefaultFolder(OutlookReciepientItem,  
olFolderCalendar);
OutlookFolder.Display;
end;
6.用MAPIFolder对象的Items属性返回该对象包含的条目对象集合。
有三种方法可以返回指定的条目对象:
●可以用Items(名字)方法返回指定的条目对象。如:下面语句返回指定文件夹中题目为“会议通知”的条目对象:
  OutlookMailItem:=OutlookFolder.Items(‘会议通知’);
●也可以用Items(索引)方法返回指定的条目对象。返回指定文件夹中第一个条目对象的方法如下:
  OutlookMailItem := OutlookFolder.Items(1);
下面例子遍历指定文件夹(MAPIFolder对象)中所有条目对象集合,并显示条目主题。
for i := 1 to OutlookFolder.Items.Count do
begin
Caption := Caption +‘-’ + String(OutlookFolder.Items[i]);
OutlookFolder.Items[i].Display;
end;
注意:若指定文件夹不包括任何条目,则Items对象集合的Count属性为0。
●还可以用Items条目集合的Find方法查找条目。这是在Outlook文件夹中查找那些没有唯一标识的条目的唯一可行的方法。如:
OutlookMailItem := OutlookFolder.Items.Find(‘[Subject] = “会议通知”’);
一旦找到满足搜索条件的第一个条目,可以用FindNext方法继续搜索其余条目。
有两种方法可以建立新条目对象:
●用Application对象的CreateItem方法创建默认条目对象,如AppointmentItem、ContactItem、JournalItem、MailItem、NoteItem、PostItem或TaskItem等。Outlook自动将新建条目保存到默认文件夹中。下面语句创建一个新邮件:
OutlookMailItem := Outlook.CreateItem
(olMailItem);
下面语句创建一个新联系人:
OutlookContactItem := Outlook.CreateItem(olContactItem);
●用Items对象集合的Add方法创建指定类型的条目对象。若未指定条目对象类型,则默认为父文件夹条目对象类型。若该文件夹从未指定类型,则默认条目对象类型为MailItem。下面语句将在当前Contacts文件夹中新建一个ContactItem条目。
OutlookContactItem := Outlook.GetNamespace
(‘MAPI’).GetDefaultFolder (olFolderContacts)
.Items.Add;  
也可以如下所示分成几行语句完成:
OutlookNameSpace := Outlook.GetNamespace(‘MAPI’);
OutlookFolder := OutlookNameSpace.
GetDefaultFolder(olFolderContacts);
OutlookContactItem := OutlookFolder.Items.Add(olContactItem);
还可以使用自定义表单向当前Contacts文件夹中加入新联系人,如:
OutlookFolder := OutlookNameSpace.
GetDefaultFolder(olFolderContacts);
OutlookContact := OutlookFolder.Items.Add(‘IPM.Contact.MyForm’);
最后,调用Item对象的Save或Send方法保存或发送新建条目。
不论是MAPIFolder对象还是Item对象,均可以调用Display方法显示对应的窗口。如OutlookContactFolder.Display可以显示联系人文件夹,OutlookTaskItem.Display可以显示任务条窗口等。
OutlookTaskItem.Display;
编程实例:创建并发送一个新邮件消息
首先调用发件箱文件夹Items条目对象集合的Add方法创建新邮件条目对象(olMailItem类型);其次调用Recipients 对象集合的Add方法来创建一个收件人,调用Attachments对象集合的Add方法来增加一个附件;然后设置邮件消息的Subject(主题)、Body(正文)(事实上所有Outlook对象都有主题和正文属性)、To(收件人)等属性;最后调用Send方法发送邮件。
完整的程序清单如下所示:
procedure SendMail;
var
Outlook: variant;{ Application }
OutlookNameSpace: variant;{ NameSpace }
OutlookFolder: variant;{ MAPIFolder }
OutlookMailItem: variant;{ MailItem }
OutlookRecipient: variant;{ Recipient }
OutlookAttachment: variant;{ Attachment }
begin
try
Outlook:=CreateOleObject(‘Outlook.
Application’);
except
ShowMessage(‘无法启动Microsoft Outlook!’);
Exit;
end;
try
OutlookNameSpace := Outlook.GetNamespace(‘MAPI’);
{ 创建新邮件消息 }
OutlookFolder := OutlookNameSpace.GetDefault
Folder(olFolderOutbox);
{ 增加收件人(若地址薄中已有此人,则仅用其名字即可,否则必须包括完整地址,如OutlookNameSpace.CurrentUser.Address)}
OutlookMailItem := OutlookFolder.Items.Add(olMailItem);
OutlookRecipient := OutlookMailItem.
Recipients.
Add(‘ZhangChunming’);
OutlookRecipient.Type := olTo;
if not OutlookRecipient.Resolve then
begin
ShowMessage(‘无法解析地址!’);
Exit;
end;
{ 插入附件(确保路径正确) }
OutlookAttachment := OutlookMailItem.
Attachments.Add(‘c:/readme.txt’);
OutlookAttachment.DisplayName := ‘样本附件’;
{ 设置邮件主题、邮件正文和重要性 }
OutlookMailItem.Subject := ‘邮件主题’;
OutlookMailItem.Body := ‘此处为邮件内容’;
OutlookMailItem.Importance := olImportanceHigh;
OutlookMailItem.Send;
finally
OutlookRecipient := Unassigned;
OutlookAttachment := Unassigned;
OutlookMailItem := Unassigned;
OutlookFolder := Unassigned;
OutlookNameSpace := Unassigned;
Outlook := Unassigned;
end;
注意:为避免程序运行时产生异常,程序做了相应的异常处理,如:调用收件人的Resolve方法以确保收件人的有效性等。
27、Outlook VBA 与自定义表单编程全解析 本文深入解析了Outlook VBA编程与自定义表单开发的核心技术,涵盖从基础的消息处理到复杂的事件响应机制。内容包括项目事件的触发顺序、防止用户在视图中修改数据、锁定项目以避免并发编辑、响应用户输入、控件事件处理以及数据验证等实用技巧。同时提供了多个代码示例,帮助开发者掌握如何构建交互性强、功能丰富的Outlook表单。文章还探讨了拓展应用思路、最佳实践、性能优化和未来发展方向,是Outlook开发者的必备参考资料。 阅读详情

相关推荐

47、Outlook 自定义字段管理与表单部署全攻略

本文详细介绍了如何在 Microsoft Outlook 中管理自定义字段和部署自定义表单。涵盖了从 Excel、文本文件和数据库导入数据创建联系人,Outlook 自定义字段的特性与部署方法,以及向自定义表单添加字段的最佳实践。同时,讨论了表单的不同发布方式,包括手动分发和编程自动化,并通过实际案例分析展示了如何在企业环境中应用这些技术。无论个人用户还是企业管理员,都可以通过本文掌握高效管理 Outlook 数据和表单的方法。

l3m4n的博客 101

VS2015 新建项目 提示 Automation 操作中文件名或类名未找到

1. 到C:\Windows\Syswow32 看看是否有 scrrun.dll 2. 没有要去下载一个 3. 运行--》输入cmd 右键管理员运行 输入regsvr32 scrrun.dll 回车 再启动VS2015 新建项目 通过

DongShiLang000的博客 1103

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规审计的考试指南,包含选择题、判断题、简答题和案例分析题。选择题考察《个人信息保护法》的关键条款,如敏感信息处理、跨境传输、委托处理等合规要求。判断题测试对个人信息处理规则的理解,如撤回同意、公开信息处理等。简答题要求阐述审计流程、个人权利、委托处理义务等内容。案例分析题以互联网企业为例,分析违规行为并提出整改建议,涉及数据收集、第三方共享、自动化决策等问题。全文旨在帮助中级审计人员掌握个人信息保护的法律规定和审计实务,提升合规审计能力。

qq_41525079的博客 547

01 - Python 调用outlook发送邮件

使用模块:win32com 1. 模块安装 pip install pypiwin32 2. 模块使用 import win32com # 调用outlook application outlook = win32com.client.Dispatch('outlook.application') 3. 发送邮件 # 创建一个item mail = outlook.CreateItem(0) # 接收人 mail.To = "***@outlook.com;***@outlook.com" # 抄送

qq_41711469的博客 5230

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7168

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 493

Outlook2013自动化配置失败

解决方法:切换为手工配置 步骤如下: 1、首先,关闭outlook程序。选择“开始”——>单击“控制面板”——> 右上角查看方式,选择“小图标”——>选择“邮件(32位)” 2、在“邮件设置”对话框下,点击配置文件下的“显示配置文件” 3、在“邮件”对话框下,删除当前的配置文件“outlook” 4、添加并创建新的配置文件“out...

weixin_30458043的博客 694

CentOS 环境 sngrep 安装及使用

在呼叫中心类应用开发过程中,经常需要对 SIP 信令抓包,分析排查问题。通常抓包的工具非常多样,如 Wireshark、tcpdump、ngrep 等都是可选项,但是针对 SIP 信令的抓包,sngrep 则更为好用。因为 sngrep 不仅提供了图形界面,还会将一通会话的 SIP 信令关联汇总,非常直观执行以下命令下载 的相关依赖库 1.2 添加 sngrep 的源并导入 执行下面的命令新增一个源仓库配置文件 然后在该文件中写入以下配置内容 执行命令导入源仓库的公钥 1.3 安装 sngrep

谈谈1974 8147

VB、VBS和VBA中使用outlook学习(三)

二、例子转⇒实现excel工资单的自动发送  每个公司每月发工资的同时要给每个员工一张工资单。而发工资单的主要目的是让员工知道自己一个月来工资组成的详细情况,确认财务结算是否有误。一般的处理方式是直接在原来全员工资表的基础上给每个员工记录前插入表头等整张打印出来后一条一条的剪裁出来发给各个员工。这种方式对小公司来说还可以,但当公司达到好几十上百或上千的员工时,财务人员光每个月剪裁着工资单就

把工作变成娱乐 4768

temu登录接口逆向分析(含Py纯算)

【代码】temu登录接口逆向分析(含Py纯算)

数据精灵喵 1946

Openwork 入门指南:开源 AI 桌面助手快速上手

Openwork是一款开源的AI桌面代理工具,提供类似Claude Cowork的免费替代方案。它支持本地运行,确保隐私安全,并能高效处理文件整理、文档读写等任务。支持多种AI模型,通过MIT许可完全免费。安装简单,仅需运行命令行或下载桌面版,需配置API Key后即可使用。操作直观,支持多步骤规划和权限控制,适合自动化重复工作。目前主要支持macOS,未来将扩展至Windows/Linux。建议从简单任务入手,逐步掌握这一高效的数字助手工具。

3802

OutLook 编程

Microsoft Outlook是可编程桌面信息管理程序。由于Microsoft Outlook本身不包含Visual Basic for Applications,但包括完整的类型库(type library)和Visual Basic Scripting Edition (VBScript),因此,Outlook对象编程可以采用两种方法:即VBScript脚本编程方法和Automation自

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1531

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

Usefull functions with Outlook Automation

Here are various ways to access different folders in Outlook via VFP automation:Basic #DEFINE#DEFINE olFolderCalendar 9#DEFINE olFolderContacts 10#DEFINE olFolderDeletedItems 3#DEFINE olFolderInBox 6#...

weixin_30629977的博客 410

多模态对齐方案

本文中我们介绍了 13 中常见的大型多模态模型(Large Multimodal Models, LMM),包括 BLIP-2,LLaVA、MiniGPT、Qwen-VL 以及 Ferret 等。最全 LMM 模型结构(13种)综述。单层linear投影、两层mlp。

liguandong 2082

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

编程窃取Outlook Express6 邮件

最近通过漏洞溢出得到了一台机器的Shell,发现该机器的主人使用Outlook Express6(以后简称OE6)收发邮件,同时该机器在硬盘上积累了非常多的邮件,我想将邮件拷过来看看,但是dbx文件足足有1.5G之多。本人特开发了一个小小的软件,特向各位黑客编程爱好者公开自己的一些成果,希望得到大家宝贵的意见。 基础知识 Windows给每个用户、用户组和计算机都分配了一个安全的ID(SID),安

1464

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何在一个Office Automation的程序中获取Shared Calendars

Imports Outlook = Microsoft.Office.Interop.Outlook Public Class Form1 Private OLApp As Outlook.Application Private OlExplorer As Outlook.Explorer Private OlNavigationPan As Outlo...

110

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Outlook Note

以Outlook object model or PIA为例 COM Add-ins一般使用Outlook object model.托管代码使用PIA或者通过COM interoperability layer使用outlook object model. Explorer:       Represents the window in which the contents of

albertliangyg的专栏 997

【前沿技术RPA】 一文学会用UiPath实现自动发送电子邮件(Email Automation)

电子邮件是最早的一种数字通信方式,时至今日,许多业务流程仍由简单的电子邮件触发,我们总是习惯性地查看收件箱。如果我们可以把很多任务可以**实现自动化**,那么可以**节省我们宝贵的时间**。在本博文中,我们将探讨如何通过使用UiPath Studio和电子邮件相关活动来**快速可靠地处理电子邮件**。你在读一大堆邮件的时候,是不是想过“一定有更有效的方法来做这件事”?使用UiPath,您现在可以**轻松检索需要立即关注的电子邮件,处理或转发给适当的人**。

baidu_33146219的博客 1万+

NetOffice核心功能详解:让Excel、Word和Outlook开发效率提升300%

NetOffice是一款强大的开源框架,专为扩展和自动化Microsoft Office应用程序而设计。通过NetOffice,开发者可以轻松创建Excel、Word和Outlook等Office应用的插件和自动化脚本,无需安装Microsoft Office主互操作程序集(PIA),显著降低开发门槛并提升开发效率。 ## 为什么选择NetOffice?三大核心优势 ### 1. 跨版本兼容,

gitblog_00171的博客 689

automation服务器不能创建对象(转)

本来程序运行的挺好的,过了几天出现了“automation服务器不能创建对象”这个问题,在网上找了一下,找到两个解决方法: 一:主要是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,开启FSO功能即可,在“运行”中执行regsvr32 scrrun.dll 二:如果javascript脚本中报这个错误是因为IE的安全设置不允许运行未标记为安全的act...

naxsu的专栏 148

outlook 未安装信息服务器,使用未安装Outlook Client的Microsoft.Office.Interop.Outlo

Solutions2Anton,I assume it's because Outlook Client is not installed. Is it possible to use Microsoft.Office.Interop.Outlook without it?Interop files are used for marshalling calls between managed/un...

weixin_39855658的博客 541
上一篇: 使用 MAPI 实现邮件发送
下一篇: 奇虎郑文彬:还原系统保护技术原理和攻防
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值