OeLibrary 1.0
开源 Outlook Express 自动化库
引言
OELibrary 是一个基于 COM 的开源组件,用 C++ 编写。我很久以前创建了这个组件,当时我在 EfExtra e-solution pvt ltd 工作。当时它是闭源的付费软件,但由于一些个人和职业原因,这个组件未能面世。大约三年后,我询问了同样的事情,Saurabh(EfExtra 董事)很高兴地同意将项目开源,而不是仅仅闲置在计算机的备份中。
他这样想的原因是,至少程序员社区可以从中受益,并且该项目在收到反馈和工作(多个想法而不是一个)后可能会变得更加强大和功能丰富。此组件在 GPL 许可证下发布。此组件按原样发布,没有任何保证。
此组件献给我的母亲已故的 Saroj Gupta 夫人。
目标
该项目的目标是创建一个编程库,该库可以实现自动化,或者换句话说,为 Outlook Express 中的某些任务提供编程访问。
核心思想是为希望从其应用程序中与 Outlook Express 交互和控制的开发人员提供一个易于使用的对象模型。此库旨在提供的一些功能是
特点
- 在 Outlook Express 中添加、删除和枚举邮件文件夹。
- 枚举、读取和删除给定文件夹中的邮件。
- 将邮件从一个文件夹移动到另一个文件夹。
- 获取选定的文件夹。
- 某些事件的通知(例如,新邮件)。
- 向 Outlook Express 添加自定义工具栏并响应其上的点击事件。
- 读取 OEAccount 信息。
- 操作 Windows 通讯簿!
它可以在哪里使用?
Outlook Express 是一个免费的电子邮件客户端,预装在 Microsoft Windows 操作系统中。Outlook Express 是当今最常用的电子邮件客户端。
与作为 Microsoft Office 套件一部分的 Microsoft Outlook 不同,Outlook Express 本身不支持自动化。Microsoft Outlook 提供了一个功能丰富且易于使用的对象模型,允许开发人员在其中实现大多数任务的自动化。
许多希望为 Outlook Express 开发应用程序/插件/加载项的开发人员无法这样做,因为它缺乏任何自动化接口。
该项目的目标是填补这一空白,并提供一个库,开发人员可以使用该库从其应用程序中自动化 Outlook Express。
该库可以开发为 COM 组件 (ActiveX DLL),开发人员可以在其项目中引用它。ActiveX 组件将提供一个类似于 Microsoft Outlook 的自动化接口的对象模型。这确保了已经使用 Microsoft Outlook 自动化进行工作的开发人员可以轻松地使用我们的 Outlook Express 自动化库。ActiveX DLL 将开发为 ATL COM 组件,以便它没有任何额外的依赖项。
使用代码和一些示例
我假设您已经在您的项目中引用了 EfOeLibrary!对象模型非常简单,您只需创建 Application 的对象,您想要的一切都来自它。
1. 获取收件箱文件夹!
Private Sub Command1_Click()
Dim app As New OELib.Application
Dim inboxFolder, rootFolder As OELib.MailFolder
' CREATE THE OBJECT OF root folder
Set rootFolder = app.GetLocalFolder
' retrieve Inbox special folder
Set inboxFolder = rootFolder.GetSpecialFolder(SF_FOLDER_INBOX)
If inboxFolder Is Nothing Then
MsgBox " error getting reference of inbox folder"
Else
MsgBox " Yo! man, you recv reference of inbox folder"
End If
End Sub
2. 获取邮件!
Private Sub Command1_Click()
Dim app As New OELib.Application
Dim inboxFolder, rootFolder As OELib.MailFolder
Dim IMsg As MailItem
' CREATE THE OBJECT OF root folder
Set rootFolder = app.GetLocalFolder
' retrieve Inbox special folder
Set inboxFolder = rootFolder.GetSpecialFolder(SF_FOLDER_INBOX)
If inboxFolder Is Nothing Then
MsgBox " error getting reference of inbox folder"
Else
MsgBox " Yo! man, you recv reference of inbox folder"
End If
' get first message
Set IMsg = inboxFolder.GetFirstMessage
' check weather you recv same of not
If Not IMsg Is Nothing Then
MsgBox IMsg.From
End If
End Sub
3. 创建工具栏
Private Sub Command2_Click()
Dim app As New OELib.Application
Dim ptoolband As OELib.OEToolBand
' get the obejct
Set ptoolband = app.GetToolBand
'add button
ptoolband.AddButton OE_TYPE_BUTTON, "Alok Gupta"
End Sub
4. 读取 OeAccount 信息!
Private Sub Command3_Click()
Dim app As New OELib.Application
Dim oeacctmgr As OEAccountMgr
Dim oeacct As OEAccount
' get account mgr object
Set oeacctmgr = app.GetOEAccounts
If Not oeacctmgr Is Nothing Then
' get news account
Set oeacct = oeacctmgr.GetFirstAccount(OE_SRV_NNTP)
If Not oeacct Is Nothing Then
MsgBox oeacct.AccountName
End If
End If
End Sub
对象模型...!
1. 文件夹 - 邮件对象模型:-
2. 工具栏对象模型:-
安装指南...!
- 使用 regsvr32.exe 注册 Efoexxxx.dll
- 将 efinject.dll 和 oehook.dll 复制到 Windows 目录中
特别感谢...!
- 我的父母
- Saurabh Gupta,[董事 EfExtra ESolution Pvt. Ltd.]
- Mumtaz Zaheer 提供 Hook 源代码
- 我的朋友 Ankit 和 Gaurav 在白盒测试和创建帮助方面的支持!
- Vizacc 免费帮助制作器
历史
2008 年 3 月 2 日:- OeLibrary 1.0 的首次发布