OMS(Outlook Mobile Service)是为Outlook Mobile插件提供短信收发功能的Web Service。事实上,Outlook仅仅提供一个集成在Outlook内的插件客户端,这个客户端通过配置,指向一个短信供应商的web服务,并自动通过协定的接口调用web服务,由web服务负责接受Outlook发来的SOAP请求,实现真正的短信发送。目前该项功能在中国区微软认证的服务提供商如下可以在如下网站上查询到http://messaging.office.microsoft.com/HostingProviders.aspx?src=O14&lc=2052。从理论上讲,任何人都可以开发这样的ws,只要接口一致,无需微软认证。笔者在近期调研了此项功能,由于水平限制,在实现过程中遇到了很多困难,走了不少弯路,也学到了不少知识,好在最后基本实现了接口,也实现了部署。本文仅仅作为总结。
Outlook客户端配置
目前Outlook2007以上版本才支持这个功能。希望使用此项功能的Outlook用户需要简单配置Outlook,这里以Outlook2010作为示例。
1.打开账户设置,选择添加新帐户:
2.选择Text Messaging(SMS),Next(注:在outlook2007中选择Other):
在Service Provider URL中输入ws服务商提供的ws地址,输入用户名和密码,这里的用户名密码是指在该服务提供商处注册的用户,跟Outlook账户无关。填写完毕之后点击Test Account Settings,如果没有错误的话OK即可。
设置完毕之后,即可通过邮件发短信。点击New Items,选择Text Message(SMS):
在弹出的新建短信页中输入即可,界面跟新建邮件界面十分相似,在To中可以直接输入手机号,多个号码可以用;隔开,也可以从联系人导入,在正文中输入短信内容,左侧还能看到预览(每屏显示的文字数量是服务商设置的)。输入完毕,点击发送即可。Outlook将自动调用接口,发送短信,如果发送失败,Outlook将以邮件的形式返回错误原因;如果发送成功短信邮件将出现在“已发送”中。
OMS的开发概述
以上内容是用户需要做的。对于服务提供商,需要开发一个web service,实现outlook定义的接口。微软官方的开发文档可以在如下地址找到,一共3个guideline:
http://msdn.microsoft.com/en-us/library/bb277361(v=office.12).aspx
上述文档的确详细说明了如何开发一个这样的ws,但是在实际部署和测试中出现了不少棘手的问题。
接口定义概述
以下四个是outlook定义的必须实现的接口:
- string GetServiceInfo() Outlook会在用户测试点击Test Account Settings时先调用此方法,此方法需要返回服务端的设置,比如提供商名称,提供的功能(短信、彩信),短信息格式限制等。
- string GetUserInfo(string xmsUser) 在调用GetServiceInfo成功后,Outlook会将用户在配置中输入的用户名和密码通过此方法请求服务端,服务端负责验证使用是否合法,并返回xml结果,如果合法,结果中可以包括用户注册时的手机号和邮箱。服务提供商保存的这两个信息可以用于日后发送回复短信时使用。
- string DeliverXms(string xmsData) Outlook在用户点击Send后,调用此方法,xmsData格式比较复杂,包含该用户的用户名和密码,短信的收件人列表,内容,如果是彩信的话,还有额外的数据。服务端得到此调用后应该先认证用户,然后发送短信,并将结果xml返回。
- string SendXms(string xmsData) 微软官方的说法是,此方法在Outlook2007SP1之后的版本是取代DeliverXms被调用的,接口的定义跟DeliverXms一模一样。事实上我在使用Outlook2010测试的时候,发现当在提供了DeliverXms方法的情况下,仍然调用的是DeliverXms。
实现以上四个接口并不困难,微软的文档有详细的协议说明。
技术选型的问题
由于系统需要,刚开始我们考虑用WCF开发一个ws,并通过windows service寄宿的方式工作。当得知https是必须的时候,还研读了老徐的文章,但是到最后只实现了浏览器访问ws能够完全信任,Outlook还是弹出错误(详见部署篇)。经调试,发现Outlook根本就没有调用ws的任何方法。无奈之下,只能回到ASP.NET Web Service,毕竟官方的例子和一些成功的例子都是这样做的。
我们没有尝试将WCF的ws寄宿在IIS中测试,原因是一方面本人水平有限,对于WCF只是知道个皮毛;另一方面时间有限,不允许做太多的尝试。最终我们是基于ASP.NET和IIS7.5部署这个ws。详细的部署方法会在下一篇涉及到。
劳动果实,转载请注明出处:http://www.cnblogs.com/P_Chou/archive/2011/01/10/oms-develop-overview.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义