tnblog
首页
视频
资源
登录

Outlook WebAddin初探

2482人阅读 2023/9/11 18:31 总访问:3467580 评论:0 收藏:0 手机
分类: .net后台框架

Outlook WebAddin初探

安装前提


首先,确保你的计算机上已安装Node.js和npm。
你可以在官方网站下载并安装它们。

VS Code安装Teams Toolkit


在vscode扩展组件中安装Teams Toolkit组件。

创建项目


首先点开Teams这个图标点击。


点击Create a New App进行创建一个新的项目。


然后选择Outlook Add-in—>Taskpane—>选择项目保存的地址—>输入项目名,就创建好了。


项目创建完成后,我们需要安装依赖包。
在项目目录打开一个控制窗口,执行npm install进行安装相关依赖包。


然后我们还需要确认,登录Microsoft 365,点开Teams图标点击Microsoft 365,我这里已经登录好了可以看到。

运行项目


在VSCode中直接按F5就可以了,它会自动执行如下两个命令。

  1. npm install
  2. npm run start

注意:中途可能会弹出需要你安装开发者证书,点击Yes就行了。
在运行前请关闭Outlook。


项目启动后,对外开放的端口为3000,并且会自动打开outlook添加好插件。


随后我们点开有个邮件,再点我们的按钮就会弹出如下内容:

向功能区添加自定义按钮


将自定义按钮添加到功能区,用于将文本插入到邮件正文中。
在代码编辑器中,打开文件 ./src/command/command.ts,并将以下代码添加到文件末尾。
此函数将 insertHelloWorld 插入到邮件正文中的光标点。

  1. function insertHelloWorld(event: Office.AddinCommands.Event) {
  2. Office.context.mailbox.item.body.setSelectedDataAsync("Hello World", {coercionType: Office.CoercionType.Text});
  3. // Be sure to indicate when the add-in command function is complete
  4. // 确保在添加器命令函数完成后发出信号
  5. event.completed();
  6. }
  7. // Register the function with Office
  8. // 将函数注册到 Office
  9. Office.actions.associate("insertHelloWorld", insertHelloWorld);


当我们需要写入邮件时,需要提高加载项的权限。
authorization.permissions.resourceSpecific[0].name属性值更改为MailboxItem.ReadWrite.User

  1. "authorization": {
  2. "permissions": {
  3. "resourceSpecific": [
  4. {
  5. "name": "MailboxItem.ReadWrite.User",
  6. "type": "Delegated"
  7. }
  8. ]
  9. }
  10. },


当外接程序命令运行代码而不是打开任务窗格时,它必须在运行时中运行代码,该运行时独立于任务窗格代码运行的嵌入式 Web 视图。 因此,清单必须指定其他运行时。
我们在 extension.runtimes 下添加对象到 runtimes 数组。

actions[0].id 属性的值必须与添加到 commands.ts 文件的函数名称完全相同,在此情况中为 insertHelloWorld
在后面的步骤中,将按此 ID 引用项目。

  1. {
  2. "id": "ComposeCommandsRuntime",
  3. "type": "general",
  4. "code": {
  5. "page": "https://localhost:3000/commands.html",
  6. "script": "https://localhost:3000/commands.js"
  7. },
  8. "lifetime": "short",
  9. "actions": [
  10. {
  11. "id": "insertHelloWorld",
  12. "type": "executeFunction",
  13. "displayName": "insertHelloWorld"
  14. }
  15. ]
  16. }


由于我们需要修改邮件内容,所以在ribbons下的contexts中应该设置为mailCompose而不是mailRead,这样就在输入邮件时显示我们的软件。当然如果你希望二者并存可以这样。

  1. "contexts": [
  2. "mailCompose",
  3. "mailRead"
  4. ],


然后添加上我们的按钮。

  1. {
  2. "id": "HelloWorldButton",
  3. "type": "button",
  4. "label": "Insert text",
  5. "icons": [
  6. { "size": 16, "file": "https://localhost:3000/assets/my-icon-16.png" },
  7. { "size": 32, "file": "https://localhost:3000/assets/my-icon-32.png" },
  8. { "size": 80, "file": "https://localhost:3000/assets/my-icon-80.png" }
  9. ],
  10. "supertip": {
  11. "title": "Insert text",
  12. "description": "Inserts some text."
  13. },
  14. "actionId": "insertHelloWorld"
  15. }


最后运行一下,打开一个新的邮件,输入内容后选中所选的内容再点击我们新添加的按钮Insert text,它将会进行改变为Hello World

调用API

修改分组栏的名字


manifest.json中找到以下节点,对label标签进行更改。
我将label这里改成了Oerlikon,分组框就编程了Oerlikon,大家随意更改。
然后我们F5查看一下。

  1. "extensions": [
  2. {
  3. "ribbons": [
  4. {
  5. "tabs": [
  6. {
  7. "builtInTabId": "TabDefault",
  8. "groups": [
  9. {
  10. "id": "msgReadGroup",
  11. "label": "Oerlikon",

更换图标


我在阿里云矢量图标库上找到16x1632x3264x6480x80128x128的图片进行下载,并放到的assets目录下。
并对所有的icons进行修改(这里我举例一部分)。

  1. "label": "Oerlikon",
  2. "icons": [
  3. {
  4. "size": 16,
  5. "file": "https://localhost:3000/assets/my-icon-16.png"
  6. },
  7. {
  8. "size": 32,
  9. "file": "https://localhost:3000/assets/my-icon-32.png"
  10. },
  11. {
  12. "size": 80,
  13. "file": "https://localhost:3000/assets/my-icon-80.png"
  14. }
  15. ],

函数列表

函数名 描述
Office.context.mailbox.item.body.setSelectedDataAsync 可以将修改的文本内容进行替换。
Office.context.mailbox.item.notificationMessages.replaceAsync 可以弹出对邮件处理的消息。(按照官方示例点击第二个按钮像这样 )

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术