如何使用Delphi创建Outlook插件?

时间:2008-10-18 18:31:10

标签: delphi com plugins outlook

我正在开发一个数据库项目,我需要创建一个Outlook 2007插件,将当前预览的消息保存到我的数据库中。

有人可以给我一个关于如何在Delphi中创建Outlook插件的分步指南,以及如何部署它?

由于

5 个答案:

答案 0 :(得分:12)

Add-in Express看起来不错。

答案 1 :(得分:12)

如果您只是想学习并了解如何操作,只需google for Delphi Outlook插件(我很确定“addin”应该比“插件”在这个上下文中提供更多相关结果)你应该来与一些稍微过时但仍然正式正确的样品添加剂,例如来自Dmitry Streblechenko的Babelfish addin(由于它依赖的Web服务不再存在但仍然显示基础知识而不再有用)或来自Paul Qualls的示例插件(遗憾的是,原始站点不再提供) 。还有mail whitelister addin可用的完整来源,但我还没看过。

但是,迟早 希望开始使用ADX等经过验证的框架,特别是如果您的插件将在公司外部使用。我们在Delphi中开发了一个共享软件插件,并且插件中大约75%的代码只是为各种版本的Outlook(特别是Outlook XP)和不同的设置提供支持(最值得注意的是使用Word进行消息编辑的选项已经对我们来说是一个主要的表格。)

另一个因素是必须不断解决愚蠢的OOM安全模型。在那里没有RedemptionOutlook Security Manager的情况下,你几乎被摧毁了。特别是不能高度推荐赎回,不仅要避免安全提示,还要用简单易用的框架简化繁琐的日常任务。

[加法:] 我们确实从我们自己的本土框架开始,所有用户都很好,直到用户数量和支持爆炸的不同配置数量。我们大约一年前切换到ADX,从未回头。从一开始就使用Redemption是一个明智的选择 - 在我们开始之前要么花费数月或者花几个月学习扩展MAPI(一旦Redemption引导你过去,你仍然倾向于选择那么容易。前几个障碍。)

BTW:对于任何自尊的插件开发人员(无论使用何种编程语言),另一个不可或缺的工具是OutlookSpy。这将真正允许您查看(并操纵)Outlook内部(以及某种程度上的Exchange)发生的事情,并让您更好地了解您的插件必须做什么才能达到您想要的效果。

答案 2 :(得分:9)

我使用Delphi构建了一个outlook插件(将房间预订系统集成到预约表单中)。

一些建议:

  • 购买并使用add-in express。它将为您节省大量时间,并允许您构建在安装时不需要任何第三方组件的COM加载项。我们首先尝试构建我们自己的组件,虽然我们设法将按钮放在表单上,​​但是花费的时间与结果不成比例。
  • 如有疑问,请使用加载项快速支持服务。他们知道他们的东西。
  • outlook的COM接口(在delphi / ocx / servers /文件夹中找到)是你的朋友。 Add-In Express仅提供围绕此功能的(更多)更方便的包装器。

要避免的事情:

  • 直接MAPI调用。它可以完成,事实上我不得不求助它来修改传输中的消息流,但它是一个真正的PITA,可以使用并且记录很差。
  • 一次性表格。我们浪费了大量时间试图让一次性表格起作用。仅使用已发布的表单。您可以从代码中将表单发布到本地文件夹,因此在实践中这不是什么大问题。更好的是使用表单区域,这是扩展表单最强大的方式。
  • 像Delphi中的COM一样假装就像普通的VCL编程一样。如果您没有COM经验,我的建议是阅读您可以获得的任何和所有文档。一些经验丰富的经验教训是在函数结束之前总是将变量设置为nil,这样对象就可以被outlook正确释放,并始终从对象请求适当的接口而不是尝试转换它。

答案 3 :(得分:5)

我用Delphi创建了一个插件,用于Excel(创建我自己的用户自定义函数)。 你需要的是一个实现_IDTExtensibility2接口的Addin。

现在我不知道确切的步骤,但搜索_IDTExtensibility2会对你有所帮助。

检查此article以获得更好的方法。 _IDTExtensibility2接口的OnConnection过程为您提供了Outlook应用程序的条目。

答案 4 :(得分:-1)

糟糕的是,这项工作必须在Delphi中完成。使用.NET和VSTO创建Outlook插件与过去的糟糕时期相比要少得多。我在COM中制作了Office插件(这一点都不好笑)和之前版本的VSTO,但VSTO 3对办公室开发人员来说是个好消息。