最近给几个CRM软件配套开发了Outlook插件,讲讲Outlook插件开发注意事项
原始出处:www.cnblogs.com/Charltsing/p/OutlookAddinsTips.html
联系QQ:564955427
从去年到现在,写了四五个Outlook插件,其中两个是给CRM系统配套使用的,代码经过两三次迭代,目前基本结构相对比较稳定,所以简单说说,做个总结。
开发环境
1、不要使用VSTO开发Outlook插件,除非你是在企业内部使用,有专门的IT管理员可以确保每台电脑安装环境的统一。否则5%的电脑部署不上。
2、推荐使用Com Addins或者一些第三方开源或者商业框架开发Outlook。
3、如果需要操作MAPI或者更底层的东西,推荐使用Redemption库(收费)。
4、C#开发Outlook插件依赖Com对象,这会给开发带来一些限制。
关于Outlook
1、不要相信Outlook里面提供的事件会像想象的那样工作,你只有亲自测试,才会知道这里面有多大的坑。(例如邮件到达事件和同步事件)
2、时刻记住Outlook对邮件的各种操作都是异步的,理解这一点,你才会知道为什么某些代码工作起来不太对劲。
3、Outlook的Ribbon回调与Office其他的程序不同,可以根据不同的界面加载不同的xml,所以它支持动态更新菜单。
4、Outlook的窗格需要包装再调用创建,具体参考MSDN;修改Forms也请参考MSDN。
5、Outlook的自定义字段是有bug的,反复修改保存会导致Outlook提示邮件被占用,需要等候一段时间重试或重启Outlook。这个问题从2013的某个更新之后开始出现,到Office365依然存在。
6、Outlook对插件的启动和退出要求比较严格,对占用事件较长的插件都会禁用,因此如果你想在插件启动的时候做初始化,建议使用子线程,同时注意跨线程操作Outlook的UI问题。
7、从Outlook 2010开始,默认情况下,Outlook不会调用IDTExtensibility2接口的OnBeginShutdown和OnDisconnection,这是为了确保Outlook可以快速关闭。如果要改变这个默认设置,需要增加插件的注册表设置。
8、在加载项管理器里面去掉勾选再勾上和Outlook启动时加载插件的行为不一致,注意CTPFactoryAvailable的执行顺序。
9、小心处理内存泄漏问题。
下面是我开发的Outlook插件基本功能演示界面
最近给几个CRM软件配套开发了Outlook插件,讲讲Outlook插件开发注意事项的更多相关文章
- JEPF 3.1.2 发布,我们的软件机床(软件快速开发平台)
JEPF新一代软件快速开发平台(Java Elephant Platform)是一款优秀的平台产品,它本着灵活.快捷开发.高性能.高协作性.高稳定性.高可用性.人性化的操作体验为设计宗旨历经2年研发成 ...
- 欲实施CRM软件,必须先懂什么是CRM软件
CRM是Customer Relationship Management(客户关系管理)的缩写,它是利用信息科学技术,实现市场营销.销售.服务等活动自动化,使企业能更高效地为客户提供满意.周到的服务, ...
- 软件快速开发平台 JEPF
JEPF新一代软件快速开发平台(Java Elephant Platform)是一款优秀的平台产品,它本着灵活.快捷开发.高性能.高协作性.高稳定性.高可用性.人性化的操作体验为设计宗旨历经2年研发成 ...
- 推荐几个最好用的CRM软件,本人亲测
CRM是英文Customer Relationship Management 的简写,一般译作“客户关系管理”.CRM最早产生于美国,由Gartner Group 首先提出的CRM这个概念的.20世纪 ...
- 简单5步说清App软件在线开发、App制作多少钱?
开发制作一款App,所有人都会首先关心开发一款App多少钱这个问题.从网上的信息来看,花费个几十万是很正常的事情,甚至有人说要花上百万才能制作出一款App.那么App软件的开发制作到底和什么有关?怎么 ...
- [转]3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
本文转自:http://www.cnblogs.com/jirigala/archive/2010/10/07/1845275.html 2010-10-07 21:39 by 通用C#系统架构, 5 ...
- 小黄豆CRM软件安装
小黄豆CRM软件(官方网址:http://www.xhdcrm.com,演示地址:http://demo.xhdcrm.com)是一款开源免费的客户关系管理系统,其客户跟进模块简单易用.安装环境是wi ...
- 勤拂拭软件Android开发之旅(1) 之 Android 开发环境搭建
勤拂拭软件工作室原创出品,欢迎转载,欢迎交流. 转载请注明原文:http://www.cnblogs.com/wangleiblog/p/6019063.html 勤拂拭软件Android开发之旅目录 ...
- 云计算CRM软件厂商,你青睐哪家?
2018年CRM系统软件市场风起云涌,国内外厂商群雄逐鹿.2019年,新一轮的角逐已然展开.据Gartner报告称,CRM客户关系管理系统在2017年全球的销售额首次超越数据库管理系统((Databa ...
随机推荐
- CentOS7 ab压力测试安装
①.ab(apache benchmark)安装 命令: yum -y install httpd-tools ②.ab测试的命令参数 命令: ab 或 ab -help 显示命令参数如下 ③.ab的 ...
- 使用maven构建dubbo服务的可执行jar包+Dubbo 程序实例
https://blog.csdn.net/zsg88/article/details/76100482 https://blog.csdn.net/zsg88/article/details/762 ...
- Linux下如何查看CPU型号、个数、核数、逻辑CPU数、位数、发行版本、内核信息、内存、服务器生产厂家
[原文链接]:http://blog.csdn.net/mdx20072419/article/details/7767809 http://blog.chinaunix.net/uid-224252 ...
- Addthis分享插件后url乱码的解决办法
Addthis分享插件安装后,有时候URL后面会出现类似#.VB4mxhbjtnQ的一串乱码的乱码,作用是用来追踪客户客户,但是给客户的印象会以为木马中毒之类的 http://localhost/mi ...
- cudaDeviceProp结构体
struct cudaDeviceProp {char name[256]; //器件的名字size_t totalGlobalMem; //Global Memory 的byt ...
- jenkins之Extended Choice Parameter多选插件
- MySQL更新字段来自另一个表的count()值
假设有文章post和评论comment两个表,文章表记录有评论的数量,但是这个值我们要一次更新. 如下,现在post表的comment_count都是0,我们的目标是:执行一个SQL语句,让其把统计c ...
- vue iOS上传图片file 出错
前言 用vue 移动端上传图片在低版本的 ios 手机上 图片转换base64 在转换file 文件类型 会报错 并且报错 “Script Error ” 查阅了github 和一些文档发现 可以吧 ...
- NFS的搭建
NFS是Network File System的简写,即网络文件系统. 网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件.通过使用N ...
- Codeforces Round #608 (Div. 2) E. Common Number
链接: https://codeforces.com/contest/1271/problem/E 题意: At first, let's define function f(x) as follow ...