基于Web技术的Outlook Add-ins开发简介

基于Web技术的Outlook Add-ins开发简介

  我也是刚刚接触Outlook Add-ins的开发,水平有限;文中若有错误,拍砖请轻一些!

零、关于Outlook Add-ins

  Outlook插件的种类不止一种,早期的有基于COM技术的、基于VSTO(Visual Studio Tools for Office)的,还有就是这里介绍的基于Web技术实现的方式。微软的官网上将其称为:Outlook add-ins。这种插件好处:

  (1) 跨平台。开发一次,可能用于Outlook的Windows版、Mac版、手机版、以及Web(Office 365 和 Outlook.com)版。

  (2) 安装方便灵活。可以本地安装,也可以从Office store上一键安装。注意:微软现在搞了一个Office store,这个市场将来也许会成为风口哦。风口,风口,风口;重要的事情说三遍。

  (3) 开发相对(COM插件)简单。工程由manifest.xml、JavaScript、css、Html构成;换句话说,这种插件是B/S结构的,因此正式发布的插件,必须要有一个Web Server与前端协作。下面的图片基本可以说明这种插件的结构:

  

  需要注意的是:

  [1] 这种插件并不安装在本地,而存在于云端。

  [2] 并非所有客户端都同时支持最新的功能。目前Outlook 2013 及更高版本、Outlook 2016 for Mac、Outlook Web App (Exchange 2013)、Outlook 网页版(Office 365 和 Outlook.com)均支持 Outlook Add-ins。

一、   Outlook Add-ins初探

下面是Office Store的URL,大家可以安装几个看看, 目前大多数插件是免费的,收费的不多。

https://appsource.microsoft.com/zh-cn/marketplace/apps?product=outlook&page=1&src=office

我看找到几个比较有意思的插件:

  [1] 对邮件进行安全扫描的:

  https://appsource.microsoft.com/en-us/product/office/WA104381359?src=office&tab=Overview

  [2] 翻译邮件的:

  https://appsource.microsoft.com/en-us/product/office/WA104124372?src=office

  [3] 预定星巴克场地的:

  https://appsource.microsoft.com/en-us/product/office/WA104380233?src=office&tab=Overview

安装完后邮件工具栏上会出现相应的图标。插件的使用非常简单:打开一封邮件后,单击某个图标,右侧会自动弹出一个窗口,显示相关内容。这里以一款反病毒插件为例,首先打开可疑的邮件,然后点击图标进行扫描,几秒种后返回该邮件中URL是否安全。

右侧的小窗口是插件的工作区,可以在其中显示与插件相关的内容,如等待动画、结果等等。多说一句,这个反病毒插件似乎还有点用,界面也挺漂亮,可以避免乱点URL中招;就是这个“TrendMicro”没怎么听过,估计是个创业公司;要是大厂商出的就更让人放心了!

二、开发实例

若要开发Outlook 插件需要了解Javascript & JQuery & Html & XML。这个例子来自于微软的官网,我实践后加入了自己的理解。本例功能很简单,就是获取某封邮件的信息,如发件人、ID等。

3.1 开发环境搭建

l  安装 Node.js, 不会装的自行百度

l  安装Yeoman : npm install -g yo generator-office

3.2 开发过程

第一步:创建一个文件夹,并以管理员权限打开CMD,进入该目录

第二步:使用Yeoman生成器创建一个Outlook add-in project

注意:该cmd shell要有管理员权限! CMD中全部内容如下:


H:\>cd H:\myWorkProj\test\my-outlook-addin

H:\myWorkProj\test\my-outlook-addin>

H:\myWorkProj\test\my-outlook-addin>yo office

_-----_     ╭──────────────────────────╮

|       |    │   Welcome to the Office  │

|--(o)--|    │   Add-in generator, by   │

`---------′   │ @OfficeDev! Let‘s create │

( _′U`_ )    │    a project together!   │

/___A___\   /╰──────────────────────────╯

|  ~  |

__‘.___.‘__

′   `  |° ′ Y `

? Would you like to create a new subfolder for your project? No

? What do you want to name your add-in? My Office Add-in

? Which Office client application would you like to support? Outlook

? Would you like to create a new add-in? Yes, I need to create a new web app and manifest file for

my add-in.

? Would you like to use TypeScript? No

? Choose a framework: Jquery

For more information and resources on your next steps, we have created a resource.html file in your project.

? Would you like to open it now while we finish creating your project? Yes

----------------------------------------------------------------------------------

Creating My Office Add-in add-in using js and jquery

----------------------------------------------------------------------------------

create package.json

create my-office-add-in-manifest.xml

create app.css

create assets\icon-16.png

create assets\icon-32.png

create assets\icon-80.png

create assets\logo-filled.png

create bsconfig.json

create function-file\function-file.html

create function-file\function-file.js

create app.js

create index.html

create resource.html

I‘m all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.

npm WARN deprecated [email protected]: express 2.x series is deprecated

npm WARN deprecated [email protected]: connect 1.x series is deprecated

npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN [email protected] No description

npm WARN [email protected] No repository field.

npm WARN [email protected] No license field.

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 438 packages in 66.034s

第三步:修改默认代码和配置

[1] 在代码编辑器(如Notepad++)中,打开项目根目录中的 index.html。 index.html决定outlook右侧窗口的内容。将 <body> 元素内的 <header> 和 <main> 替换为以下标记并保存该文件。


<div class="ms-Fabric content-main">

<h1 class="ms-font-xxl">Message properties</h1>

<table class="ms-Table ms-Table--selectable">

<thead>

<tr>

<th>Property</th>

<th>Value</th>

</tr>

</thead>

<tbody class="prop-table"/>

</table>

</div>

[2] 在项目的根目录中找到app.js编辑,用以下代码替换全部内容,然后保存该文件。

‘use strict‘;
 
(function () {
 
  // The initialize function must be run each time a new page is loaded
  Office.initialize = function (reason) {
    $(document).ready(function () {
      loadItemProps(Office.context.mailbox.item);
    });
  };
 
  function loadItemProps(item) {
    // Get the table body element
    var tbody = $(‘.prop-table‘);
 
    // Add a row to the table for each message property
    tbody.append(makeTableRow("Id", item.itemId));
    tbody.append(makeTableRow("Subject", item.subject));
    tbody.append(makeTableRow("Message Id", item.internetMessageId));
    tbody.append(makeTableRow("From", item.from.displayName + " &lt;" +
      item.from.emailAddress + "&gt;"));
  }
 
  function makeTableRow(name, value) {
    return $("<tr><td><strong>" + name + 
      "</strong></td><td class=\"prop-val\"><code>" +
      value + "</code></td></tr>");
  }
 
})();

[3] 在项目的根目录中打开 app.css,用以下代码替换全部内容,然后保存该文件。

html,
body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}
 
td.prop-val {
    word-break: break-all;
}
 
.content-main {
    margin: 10px;
}

[4] 修改manifest.xml

  1. 打开 my-office-add-in-manifest.xml 文件。
  2. ProviderName 元素具有占位符值。 将其替换为你的姓名。
  3. Description 元素的 DefaultValue 属性具有占位符。 将其替换为 My First Outlook Add-in。
  4. SupportUrl 元素的 DefaultValue 属性具有占位符。 将其替换为 https://localhost:3000。
...
<ProviderName>Jason Johnston</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<!-- The display name of your add-in. Used on the store and various places of the Office UI such as the add-ins dialog. -->
<DisplayName DefaultValue="My Office Add-in" />
<Description DefaultValue="My First Outlook Add-in"/>
 
<!-- Icon for your add-in. Used on installation screens and the add-ins dialog. -->
<IconUrl DefaultValue="https://localhost:3000/assets/icon-32.png" />
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/hi-res-icon.png"/>
 
<!--If you plan to submit this add-in to the Office Store, uncomment the SupportUrl element below-->
<SupportUrl DefaultValue="https://localhost:3000" />
...

三、安装测试插件

  1. 在命令提示符/行中,确保自己处于项目的根目录中,然后输入 npm start。此操作将启动 Web 服务器(地址为 https://localhost:3000)并在默认浏览器中打开该地址,确保正确启动了web server。

  2. Outlook安装插件。我用的是Outlook 2016, 安装方式如下:

  

  跳到浏览器后,点击“+”选择从文件加载,浏览器在未出现任何证书错误的情况下加载外接程序页面后,加载 my-office-add-in-manifest.xml 文件。

  选择manifest.xml后就按提示安装

  安装成功后Outlook工具栏上面会出现一个图标。

  3. 使用时,打开一封 Outlook 中的邮件,点击插件图标。

  Microsoft Office 项目生成器生成的自签名证书目前存在问题,这将导致浏览器报告外接程序站点不安全,并阻止插件在 Outlook 客户端中加载。看到这个页面不用管,点击“Refresh the page”继续。

  接下来点击“Continue to this website …”:

  1. 接下来会自动显示右侧的任务窗格,我们可以看到当前邮件的信息:

到此结束!

原文地址:https://www.cnblogs.com/i-love-tech/p/8116989.html

时间: 2024-10-26 15:10:18

基于Web技术的Outlook Add-ins开发简介的相关文章

如何基于web技术开发国产化网管软件

随着Java和web技术的成熟及其在Internet上的广泛应用,网络管理技术和模式迎来了又一次革命.在网络管理领域,通过Web技术(如Web服务器,HTTP协议.HTML和Java语言等)来集成网络管理系统,就能够获得可运行于各种平台的简单有效的管理工具.特别是目前人们对计算机网络管理工具的要求已不仅仅局限于集中式管理模式,而要求网络管理工具具有分布计算能力.近几年来随着Java.EJB.XML等技术的发展与成熟使人们对网络管理的分布式要求已成为现实. 1. 基于Web的网络管理模式的特点 分

基于web自动化测试框架的设计与开发(本科论文)

原文地址:https://www.cnblogs.com/caiqianghao/p/10107690.html

基于WEB的企业用能信息在线填报系统设计

源码下载:http://download.csdn.net/detail/yiduiguwen/9523660 二.课题来源及选题依据 对于任何一家企业来说,其正常的生产过程都需要各种的一次或二次能源,针对能源使用计量数据的管理和应用,在企业发展过程中有着日益重要的作用.企业用能数据反映了消耗水平的高低,可以及时有效地指导企业有关部门及时采取行之有效的措施降低能耗,提高企业的节能意识,推动节能工作深入开展. 对于企业用能情况的查询与更新,不同企业员工应当具有不同的处理权限,比如某些低级别用户只能

Web应用程序开发,基于Ajax技术的JavaScript树形控件

感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项. 目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery.Dojo.YUI.Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题. 展示离不开数据,树形控件主要

转:WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)

转:http://www.cnblogs.com/carysun/archive/2009/01/11/receiveactivity.html 如果你曾经负责开发企业ERP系统或者OA系统,工作流对你来说一定并不陌生.工作流(Workflow)是对工作流程及其各操作步骤之间业务规则 的抽象.概括.描述.工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档.信息或者任务.有见及 此,微软在.NET 3.0基础上发布了WF,WCF,以及WCS(身份

基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作量日益变大,而传统的人工管理方式已经远远不能满足现在旅游的服务方式.传统的旅游方式经分析其有诸多的缺陷,存在数据维护效率低下,不易保管,容易丢失和出错.同时查询也不方便,劳动力成本过高导致的旅游资源信息不方便,也在一定程度上导致了对各种信息反应缓慢,容易丧失商机.为了弥补上述缺陷,便于开展旅游预订工

快速了解Electron:新一代基于Web的跨平台桌面技术

本文引用了作者“ ConardLi”的<用JS开发跨平台桌面应用,从原理到实践>一文部分内容,原文链接:segmentfault.com/a/1190000019426512,感谢原作者的无私分享. 1.引言 现在开发IM应用动不动就要求多端——即Android端.iOS端.PC端.Web端等,Android端和iOS端作为两种不同的移动端技术,单独开发和维护还能理解,PC端和Web端如果要单独开发那就有点头大了,必竟开发传统的PC桌面应用成本太高(QT这类技术跟Web技术相比,上手难度大的多

【案例分享】SpreadJS金融行业应用实践,开发基于Web Excel的指标补录平台

SpreadJS作为一款基于 HTML5 的纯前端电子表格控件,以“高速低耗.高度类似Excel.可无限扩展”为产品特色,提供移动跨平台和浏览器支持,可同时满足 .NET.Java.App 等应用程序中的 Web Excel 组件开发.数据填报.在线文档.图表公式联动.类 Excel UI 设计等业务场景. 本期公开课,将由华融融通科技有限公司开发经理——郭晓东先生,为我们深入剖析:SpreadJS在金融行业的成功案例,助你快速构建基于Web Excel的指标补录平台. 案例分享地址:https

基于Web开发模式的信息抽取

基于Web 开发模式的信息抽取 信息抽取是一个互联网自然语言处理的一个首要环节,信息抽取的准确度会直接影响到后续的处理.信息抽取的目标是去除噪音,获取网页有价值的信息如网页的标题.时间.正文.链接等信息.   主流算法介绍 网页信息抽取的方法有很多,比如从算法上分:基于模板的,基于信息量.基于视觉的.基于语义挖掘的.基于统计的.从HTML 处理上分为:基于行块.基于DOM 树.下面我逐一介绍. 1.     基于模板,一般由人工维护一个URL 和HTML 的模板.当URL 匹配到某个URL 模板