Outlook API
1、Outlook简介
若要从Outlook 外控制Outlook对象,必须在编写代码的工程中建立对Outlook对象库的引用。
1.1 Outlook Application说明:
代表整个Microsoft Outlook应用程序。它是层次结构中唯一可使用CreateObject方法或GetObject函数返回的对象。
1.2 Outlook Application 对象的用途:
- 作为根对象,使用它可访问 Outlook 层次结构中的其他对象。
- 允许直接访问使用CreateItem创建的新项目,而不用遍历对象层次结构。
- 允许访问当前界面对象(浏览器和检查器)。
1.3 返回 Outlook Application 对象引用的方法:
- 可以使用 CreateObject 函数启动新的Outlook 会话,并且返回Application对象的引用,该对象代表新会话。
- 可以使用GetObject函数返回Application对象的引用,该对象代表正在运行的会话。请注意,因为在任何给定时刻只能有一个Outlook实例处于运行状态,所以GetObject在Outlook中使用时无太大用途。CreateObject总是用来访问当前Outlook实例或在没有实例时创建新实例。但是,也可以使用GetObject方法的错误跟踪功能来确定Outlook当前是否处于运行状态。
- 可以在几种类型的语句中使用 New关键字隐式地创建Outlook Application对象的新实例,使用Set语句将对象变量设置为Application对象的新实例。也可以在Dim、Private、Public 或 Static语句中使用New关键字来声明对象变量。Application对象的新实例在第一次引用该变量时创建。
若要启动Outlook自动化会话,可以使用前期绑定或后期绑定。后期绑定使用GetObject或CreateObject函数初始化Outlook。例如,以下代码将对象变量设置为Outlook Application对象,该对象为Outlook对象模型中的最高层对象。所有自动化代码都必须首先定义Outlook Application对象,才能够访问其他Outlook对象。
Dim ol as Object/Variant
Set ol = CreateObject("Outlook.Application")
若要使用前期绑定,首先要设置到Outlook对象库的引用。然后就可用以下语法启动Outlook会话。
Dim ol as Outlook.Application
Set ol = New Outlook.Application
或直接使用:
Dim ol as New Outlook.Application
大部分编程解决方案都与 Outlook 中存储的数据进行交互。Outlook在邮件应用程序编程接口(MAPI)文件夹中存储其全部信息。在将对象变量设置为Outlook Application对象后,通常要设置一个 Namespace对象来引用 MAPI,如下所示:
Set ol = New Outlook.Application
Set ns = ol.GetNameSpace("MAPI")
Set f = ns.GetDefaultFolder(olFolderContacts)
2、访问Outlook
2.1 VBA包含3种从另一个程序中访问Outlook的方法。
2.1.1 Outlook未被加载:CreateObject方法
Sub GetOlObject_1()
Dim ol As Object, counter As Integer Set ol = CreateObject("Outlook.Application")
counter = ol.Getnamespace("MAPI").Getdefaultfolder().Items.Count
Debug.Print "InBox中邮件的总数为:"; counter End Sub
限制条件:CreateObject不能识别Outlook类型名称,只能识别Outlook常量。
例如:在VBA中,"收件箱"映射的类型名称是olFolderInbox,映射的Outlook常量是6。
counter = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items.Count
将返回一个错误。
2.1.2 Outlook已经被加载:GetObject方法
Sub GetOlObject_2()
Dim ol As Object, counter As Integer Set ol = GetObject(, "Outlook.Application")
counter = ol.Getnamespace("MAPI").Getdefaultfolder().Items.Count
Debug.Print "InBox中邮件的总数为:"; counter End Sub
GetObject方法的限制条件同CreateObject。
2.1.3 加载Outlook_VBA_Library
References方法:无论Outlook是否被加载都独立。
手动引用:VBE-->工具-->引用-->Microsoft Outlook 11.0/12.0/15.0 Object Library
Sub GetOlRef() ThisWorkbook.VBProject.References.AddFromFile "msoutl9.olb" 'Outlook 2000
ThisWorkbook.VBProject.References.AddFromFile "msoutl10.olb" 'Outlook 2003
ThisWorkbook.VBProject.References.AddFromFile "msoutl11.olb" 'Outlook 2007 End Sub
加载库后,你可以使用Outlook作为一个对象。
counter = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items.Count
此种情况下,你可以使用Outlook的类型名称和常量。
Sub GetOlObject_3()
Dim counter As Integer counter = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items.Count
Debug.Print "InBox中邮件的总数为:"; counter End Sub
或者使用New关键字隐式地创建Outlook对象:
Sub GetOlObject_4()
Dim ol As Outlook.Application, counter As Integer Set ol = New Outlook.Application
counter = ol.GetNamespace("MAPI").GetDefaultFolder().Items.Count
Debug.Print "3InBox中邮件的总数为:"; counter End Sub
2.1.4 获取动态引用:
Sub GetRefInfo()
Dim i As Integer On Error Resume Next
For i = To ThisWorkbook.VBProject.References.Count
Debug.Print ThisWorkbook.VBProject.References.Item(i).Name
Debug.Print ThisWorkbook.VBProject.References.Item(i).Description
Debug.Print ThisWorkbook.VBProject.References.Item(i).GUID
Debug.Print ThisWorkbook.VBProject.References.Item(i).Major
Debug.Print ThisWorkbook.VBProject.References.Item(i).Minor
Debug.Print ThisWorkbook.VBProject.References.Item(i).FullPath
Next End Sub
2.2 Outlook中的默认文件夹
2.2.1 DefaultFolder的清单
Sub ol_5()
Dim ol As Object Set ol = CreateObject("Outlook.Application")
With ol.GetNamespace("MAPI")
Debug.Print .GetDefaultFolder().Name '删除的项目Deleted items
Debug.Print .GetDefaultFolder().Name '发件箱PostOut
Debug.Print .GetDefaultFolder().Name '发送项目Sent items
Debug.Print .GetDefaultFolder().Name '收件箱PostIn
Debug.Print .GetDefaultFolder().Name '日历Canlender
Debug.Print .GetDefaultFolder().Name '联系人Contacts
Debug.Print .GetDefaultFolder().Name '日记Journals
Debug.Print .GetDefaultFolder().Name '便签Notes
Debug.Print .GetDefaultFolder().Name '任务Tasks
Debug.Print .GetDefaultFolder().Name '提醒Reminders
Debug.Print .GetDefaultFolder().Name '提醒Reminders
Debug.Print .GetDefaultFolder().Name '草稿Drafts
End With End Sub
| OlDefaultFolders常量 | Value |
|---|---|
| olFolderCalendar | 9 |
| olFolderContacts | 10 |
| olFolderDeletedItems | 3 |
| olFolderDrafts | 16 |
| olFolderInbox | 6 |
| olFolderJournal | 11 |
| olFolderJunk | 23 |
| olFolderNotes | 12 |
| olFolderOutbox | 4 |
| olFolderSentMail | 5 |
| olFolderTasks | 13 |
| olPublicFoldersAllPublicFolders | 18 |
| olFolderConflicts | 19 |
| olFolderLocalFailures | 21 |
| olFolderServerFailures | 22 |
| olFolderSyncIssues | 20 |
2.3 Outlook的标准项目
Outlook标准的项目有以下几种:电子邮件(email)、约会(appointment)、联系人(contact)、任务(task)、日记(journal)、便签(note)、'sticker'(Post-it)、distributionlist
特殊项目:taskrequest、meetingrequest
Outlook根据存储的文件夹区分邮件:
草稿邮件:草稿文件夹-->GetDefaultFolder(16)
邮件:映射到PostOut-->GetDefaultFolder(4)
发送邮件:映射到Sent items-->GetDefaultFolder(5)
接收邮件:映射到PostIn-->GetDefaultFolder(6)
2.3.1 标准项目清单:
Sub ol_6()
With CreateObject("Outlook.Application")
.CreateItem(-)
End With End Sub
|
OlItemType |
value |
| olAppointmentItem | 1 |
| olContactItem | 2 |
| olDistributionListItem | 7 |
| olJournalItem | 4 |
| olMailItem | 0 |
| olNoteItem | 5 |
| olPostItem | 6 |
| olTaskItem | 3 |
3 Outlook中的VBA命令
Email属性
Outlook API的更多相关文章
- C#中调用Outlook API 发起会议
原文:C#中调用Outlook API 发起会议 在我上一篇博文中曾提到了 SharePoint 中调用传出电子邮件中的邮件服务器及地址发送邮件 但是,里面的方法只能用于发送普通电子邮件.如果要发起会 ...
- [转]Outlook API
本文转自:https://www.cnblogs.com/yl153/p/6711519.html 1.Outlook简介 若要从Outlook 外控制Outlook对象,必须在编写代码的工程中建立对 ...
- Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用
通过本文你将学会如下内容: 1,如何使用Xamarin开发跨平台(Windows,Android,iOS)应用. 2,如何使用微软的登录界面登入Microsoft账号. 3,如何使用Outlook邮箱 ...
- 使用C#模拟Outlook发送邮件,代码编译报错
添加OutLook API using OutLook = Microsoft.Office.Interop.Outlook; 发送邮件方法 public void SendEmail() { Out ...
- outlook 会议室
原文:outlook 会议室 但是,里面的方法只能用于发送普通电子邮件.如果要发起会议之类的特殊邮件的话,可以C#调用Outlook API,自身的API. 创建项目后,为它添加.NET引用:“Mic ...
- 获取outlook联系人寻呼字段
这称不上一篇技术文. 这边记录解决一个问题的过程和感受.这种感觉每个搞IT的人或多或少都感受过,是程序人独有的快乐之一.只是大部分人没有将这种感觉记录下来.但是当你记录时,这种感觉也早已消失. 需求: ...
- [工具]Microsoft To-Do,简约还是简陋?
1. 简介 微软收购奇妙清单后,由奇妙清单的原班人马打造了一个全新的待办事项应用,就叫"To-Do"(简单粗暴,好像新浪微博直接就叫"微博"的感觉).这个应该刚 ...
- JavaScript API for Office Outlook Add-in - “一页纸文档“
上一篇文章 Office Add-in Model 为 Outlook Mail Add-in 提供的 JavaScript API 介绍 ,简单地在表格中列出了所有的 Object 定义,但是个人感 ...
- Office Add-in Model 为 Outlook Mail Add-in 提供的 JavaScript API 介绍
本文所讨论的 Mailbox API是指在 Mail Add-in 中可调用的 JavaScript API.开发者可以利用这些API 实现 Add-in 和 Outlook 的交互(数据读取与写入) ...
随机推荐
- 【JavaWeb】EL表达式
EL表达式 EL表达式语言,用于简化JSP的输出: EL表达式的基本语法:${表达式}: 示例:<h1>学生姓名:${student.name}</h1> 作用域对象 忽略书写 ...
- HttpClient忽略SSL证书
今天公司项目请求一个接口地址是ip格式的,如:https://120.20.xx.xxx/xx/xx,报一个SSL的错: 由于之前请求的接口地址都是域名地址,如:https://www.xxx.com ...
- Ubuntu安装DaVinci Resolve
安装DaVinci Resolve所需依赖 sudo apt install libssl1.0.0 ocl-icd-opencl-dev fakeroot xorriso 下载MakeResolve ...
- 7.5 高级数据源---Kafka
一.Kafka简介 Kafka是一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息.Kafka可以同时满足在线实时处理和批量离线处理. 在公司的大 ...
- aa:function()和function aa()
1.function aa() function aa()是定义的函数 function aa(){var a=5;}var c = aa(); //aa函数已经执行完,c 代表bb变量并没有被收回 ...
- fiddler面试题
1.什么叫断点? Break Point:进行接口测试时,为了测试后端功能而设置的. 2.断点有哪些方式? Before Requests:在请求时,没有达到服务器之前设置断点. -- 全局断 ...
- [C4] 前馈神经网络(Feedforward Neural Network)
前馈神经网络(Feedforward Neural Network - BP) 常见的前馈神经网络 感知器网络 感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控 ...
- vscode (1.41.0版本,1.41.1版本)node_modules部分TS声明文件@types包会导致该版本没JS语法提示
正常提示如下: 然而我的提示没了,本以为是插件问题,把所有插件禁用不行!卸载重装vscode还是不行!!但是其他电脑的1.41.1版本,同样代码确没问题!!!简直日了*了 折腾大半天,发下问题如下: ...
- Oracle索引知识学习笔记
目录 一.Oracle索引简介 1.1 索引分类 1.2 索引数据结构 1.3 索引特性 1.4 索引使用注意要点 1.5.索引的缺点 1.6.索引失效 二.索引分类介绍 2.1.位图索引 1.2.函 ...
- Vue.js 源码分析(二十五) 高级应用 插槽 详解
我们定义一个组件的时候,可以在组件的某个节点内预留一个位置,当父组件调用该组件的时候可以指定该位置具体的内容,这就是插槽的用法,子组件模板可以通过slot标签(插槽)规定对应的内容放置在哪里,比如: ...