天道酬勤,学无止境

Outlook Add-in that activates function when the user opens a email

I'm creating an add-in that detects fraud in emails with in the body using AI. So I need run every time the user open an email. I didn't find anything on events. The Context add-in seems to not be usable in this scenario because of the dependency on regular expressions. I wanna know if someone knows another approach to this use case.

评论

Currently the feature of event based activation of add-ins in read mode, is not a part of the product. We track Outlook add-in feature requests on our Tech Community Page. Please submit your request there and choose the appropriate label(s). Feature requests on Tech Community are considered, when we go through our planning process. For more details on event based activation of add-ins you can read here.

There is no way to activate add-ins automatically for a selection without contextual conditions triggered (regex and etc.).

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Outlook 加载项电子邮件项目标记(Outlook Add-in email item marks)
    问题 我需要一个建议。 我们正在使用 .net 开发 Outlook 加载项,我需要调查是否有办法为电子邮件创建一些自定义标记。 我们需要对电子邮件执行操作,取决于之前是否对该电子邮件执行过操作,并在 Outlook UI 上显示此条件(如“已读”、“未读”)。 你能给点建议吗? 回答1 您可以在 Outlook 2007 或更高版本中使用类别执行此操作。 类别是一种颜色编码标签系统,可以很好地用于此,因为您可以在电子邮件中放置一个或多个类别,并且插件可以根据需要创建新类别。 遗憾的是,我在 C# 中没有有用的示例代码,但我在 VB.net 中确实有一些应该仍然有帮助的。 :) 对于您的特定问题,您将处理电子邮件,然后使用类别来标记您已经处理了这些电子邮件。 因为类别标签也会显示在 UI 中,所以用户将能够轻松看到它。 Private Shared ReadOnly CATEGORY_TEST As String = "Custom Overdue Activity" ' This method checks if our custom category exists, and creates it if it doesn't. Private Sub SetupCategories() Dim categoryList As Categories = Application
  • Outlook Ribbon Load Inspector.CurrentItem 为空(Outlook Ribbon Load Inspector.CurrentItem is null)
    问题 概述 我有一个使用 VSTO 创建的 Outlook 加载项。 该加载项有一个用于Mail.Compose功能区类型的功能区(可视化设计器)。 功能区选项卡ControlIdType设置为“自定义”。 加载项中除设计器代码之外的唯一代码是功能区的以下Load处理程序。 this.Context.CurrentItem意外返回 null。 代码 private void RibbonComposeMail_Load(object sender, RibbonUIEventArgs e) { try { var inspector = this.Context as Outlook.Inspector; if (inspector == null) { throw new ApplicationException("Fail - Step 1"); } var currentMailItem = inspector.CurrentItem as Outlook.MailItem; if (currentMailItem == null) { throw new ApplicationException("Fail - Step 2"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } 脚步 打开草稿电子邮件。
  • 如何自动运行 Office 365 Outlook 加载项(How to autorun Office 365 outlook add-in)
    问题 我正在为 Outlook 创建 Office 365 加载项。 我希望我的加载项在用户阅读电子邮件时自动运行(在阅读窗格中打开它)。 我当前的版本在邮件正文顶部显示加载项名称,当我单击它时加载项运行。 Office.initialize = function (reason) { $(document).ready(function () { displayItemDetails(); }); }; 我还想隐藏该加载项按钮并在后台运行它。 回答1 Office 加载项平台目前不允许应用以您描述的方式自动启动。 请随时在 Office 可扩展性平台的 UserVoice 上请求此功能。 加布里埃尔·罗耶 MSFT Office 可扩展性团队的开发人员 回答2 目前不支持自动启动 Outlook 加载项。 你的场景是什么? 可能有不同的方法来实现它。 回答3 老问题,新信息: 虽然不是完全“自动启动”,但 Outlook 现在支持固定加载项。 当加载项支持可固定任务窗格时,会为用户提供“固定”加载项打开的选项。 当用户在邮件项目之间移动时,固定加载项将自动加载到新邮件项目的上下文中。
  • How can we force a mailbox item to be persisted to EWS?
    Note: This particular issue has significant impact on our customers, which translates to high business impact with direct consequences on revenue. TL;DR. How can our Office add-in for Outlook, when a user interacts with our add-in while composing an email draft, minimize the amount of time it takes before the EWS GetItem API will return an OK response for the itemId we receive from Office.context.mailbox.item.saveAsync()? If it turns out that our add-in has no control over when the item will be persisted to EWS, then what could an end-user do to speed this up? We are looking for either (a) a
  • 我们如何强制将邮箱项目持久化到 EWS?(How can we force a mailbox item to be persisted to EWS?)
    问题 注意:这个特殊问题对我们的客户有重大影响,这会转化为对收入产生直接影响的高业务影响。 TL;博士。 当用户在撰写电子邮件草稿时与我们的加载项交互时,我们的 Outlook Office 加载项如何最大限度地减少EWS GetItem API为我们从Office.context.mailbox.item.saveAsync()收到的itemId返回 OK 响应之前所需的时间Office.context.mailbox.item.saveAsync() ? 如果事实证明我们的加载项无法控制项目何时将持久保存到 EWS,那么最终用户可以做些什么来加快速度? 我们正在寻找 (a) 技术解决方案或 (b) 消息来指导我们的客户如何缓解/修复/解决此问题。 最终用户影响 我们的一些客户无法使用我们的 Outlook Office 加载项发送电子邮件,或者必须等待很长时间(> 2 分钟)才能发送电子邮件。 我们的目标 我们希望所有客户都能够使用我们的加载项发送电子邮件,而无需等待不合理的时间。 附加上下文 根据我们的日志和客户报告,此问题仅存在于Outlook 2016 for Windows桌面应用程序中。 我们没有证据表明该问题存在于任何其他版本的 Outlook 中,包括 Outlook 2013 或 Outlook for Mac,但该问题也可能存在于这些客户端中。 我们的插件概述
  • 如何使用 Office JS Add-in API 转发电子邮件?(How to forward an email using Office JS Add-in API?)
    问题 我正在尝试使用 Office 365 Javascript API for Outlook 开发加载项。 我正在使用 Microsoft 的参考来查找允许我在单击按钮时转发当前打开的电子邮件的方法。 问题是参考文献中没有一种方法可以做到这一点,如何使用 Office JS API 转发电子邮件? 我想它应该是这样的: var item = Office.context.mailbox.item; # item represents the currently opened email item.Forward(email) 回答1 Office.js 中没有用于转发当前电子邮件的方法。 一种替代解决方案是为此使用 Microsoft Graph。 您需要使用在 Outlook 加载项中使用单点登录令牌对用户进行身份验证中概述的步骤来注册应用程序 ID。 获得令牌和消息的id ,您可以调用 Microsoft Graph /forward端点: POST https://graph.microsoft.com/v1.0/me/messages/{id}/forward Content-type: application/json { "comment": "", "toRecipients": [ { "emailAddress": { "name": "recipient
  • 如何从任务窗格应用程序中获取用户名、电子邮件地址、文件名(How to get username, email address, filename from task pane app)
    问题 我试图从任务窗格应用程序(Office 加载项)中获取以下信息: 用户信息,即。 用户名、电子邮件地址当前打开文档的文件名 我目前正在为 Word、Excel 和 PowerPoint 以及 Outlook 应用程序开发任务窗格插件。 请指教。 回答1 目前没有允许您检索用户信息的 Office API。 但是,您始终可以使用 Active Directory 身份验证库 (ADAL) 来获取用户的身份。 尽管它并不完美,但它应该可以工作。 请随时在 Office 可扩展性平台的 UserVoice 上为此请求 API。 回答2 上周在开发者预览版中发布了单点登录 (SSO)。 作为系统的一部分,您的加载项从包含“preferred_username”属性的 Office 主机应用程序获取令牌。 该属性的值是登录到 Office 的用户的电子邮件。 为 Office 加载项启用单点登录(预览)中有一个概述。 有两个样本: Office-Add-in-ASPNET-SSO Office-Add-in-Nodejs-SSO 在这两个示例中,外接程序还使用从 Office 主机接收的令牌来获取 Microsoft Graph 的访问令牌,但您的外接程序不必执行该额外步骤。 我不知道有什么方法可以在不使用 SSO 的情况下获取用户身份。 回答3 无法从 Word/Excel
  • Office add-in is not activated on Outlook if open .msg template
    My add-in has a MessageComposeCommandSurface ExtensionPoint that adds a button to the ribbon when the user is composing a message and MessageReadCommandSurface for the read mode. I expected the button to always be enabled when it is visible (e.g. when the user is composing a new message or replying to an existing one). Works perfectly, but my add-in is greyed out/disabled when opening a template (save a message as a template and open .msg file with outlook). Add-in is greyed out if .msg was saved from composing mode. Add-in is disabled if.msg was saved from read mode. Does anyone know the why
  • 在 Outlook 加载项中发送时保存电子邮件(Save Email Upon Send in Outlook Add-In)
    问题 我正在制作 Outlook 插件(Visual Studio 2010、.NET 4.0、C#),我想在用户发送电子邮件后自动存档。 到目前为止,我所拥有的是以下内容: private void ThisAddIn_Startup(object sender, System.EventArgs e) { //Create an event handler for when items are sent Application.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(saveEmail); } private void saveEmail(object Item, ref bool Cancel) { } 我通过调试发现我的 saveEmail 方法在电子邮件实际发送之前触发。 这没关系,理想情况下,我希望在成功发送电子邮件后立即将其解雇,因此如果有办法做到这一点,我会很感激一些指示。 在任何情况下,我都可以进入该方法,我想做的是将该电子邮件作为 Outlook.MailItem 对象访问,并使用 .SaveAs 方法和我选择的任何参数。 我将如何获取当前打开和即将发送的电子邮件作为 MailItem 对象? 回答1 你可以试试这个代码 private void saveEmail(object
  • Save Email Upon Send in Outlook Add-In
    I'm making an Outlook Add-in (Visual Studio 2010, .NET 4.0, C#), and I would like to automatically archive a user's email after they send it. What I have so far is the following: private void ThisAddIn_Startup(object sender, System.EventArgs e) { //Create an event handler for when items are sent Application.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(saveEmail); } private void saveEmail(object Item, ref bool Cancel) { } What I've found through debugging is that my saveEmail method fires off right before the email actually sends. This is OK, ideally I would like it to be fired off
  • 如何从加载项 [任务窗格或其他] 在 Outlook 中保存文件?(How to save a file in Outlook from Add-in [taskpane or otherwise]?)
    问题 我已经构建了一个与用户的电子邮件交互的 Office/Outlook 加载项。 我需要/要求为我的加载项用户构建/创建文件并将其保存到桌面。 我已经尝试了各种方法和典型的网络 JavaScript 解决方案。 这些解决方案仅在通过 OWA 使用加载项时才有效。 这些解决方案还在 Safari、FF、Chrome 等中成功测试……但在 Outlook for Mac/Windows 中不起作用。 我一直在 [未成功] OfficeJS API 文档中搜索可能的 API 方法来保存文件,而不是用 JavaScript 编写我自己的方法。 这样的事情存在吗? Outlook 加载项能否从“Outlook for Mac/Windows”中为用户创建文件并将其保存到桌面? 编辑:虽然这里的文档(https://docs.microsoft.com/en-us/office/dev/add-ins/concepts/browsers-used-by-office-web-add-ins)建议(例如) Outlook for Mac 正在运行嵌入式 safari……它似乎是一个更加锁定的 Safari 沙盒版本。 这让我想到了一个假设,再多的自定义 JavaScript 也不会让我实现我的功能。 注意:WRT 实现我自己的 JS 来下载文件(仍然不成功,也许这里的某个地方存在有效的
  • How to save a file in Outlook from Add-in [taskpane or otherwise]?
    I have built an Office/Outlook add-in that interacts with my user's email messages. I have the need/requirement to build/create and save a file to the desktop for my add-in user. I have tried various methods with typical JavaScript solutions for the web. These solutions work only when the add-in is being used through OWA. These solutions also test successfully in Safari, FF, Chrome, etc ... but will not work in Outlook for Mac/Windows. I have been searching [unsuccessfully,] the OfficeJS API documentation for a possible API method to save a file instead of writing my own in JavaScript. Does
  • Outlook 加载项崩溃或您的服务器管理员限制了您可以同时打开的项目数(Outlook Add-In Crashes or Your server administrator has limited the number of items you can open simultaneously)
    问题 我创建了一个简单的 Outlook 插件,用于将联系人从一个文件夹复制到另一个文件夹。(约 5000 个联系人) 为什么我需要这个? 如此处所述,有一种奇怪的方法可以创建公共地址簿。 那么为什么不复制公共文件夹中的所有联系人呢? 我希望我的团队与我的联系人共享一个地址簿,但只有全名和电子邮件作为信息。 我添加了一个带有两个按钮的工具栏。 选择文件夹并同步。 我的问题是,一段时间后运行同步时,我得到 您的服务器管理员限制了您可以同时打开的项目数。 尝试关闭您已打开的邮件或从您正在撰写的未发送邮件中删除附件和图像。 我在每个对象中都使用了Marshal.ReleaseComObject ,试图在添加之间添加一些延迟。 但仍然得到同样的错误。 然后我在 StackOverflow 上找到了一篇文章,说要添加GC.Collect来阻止上面的错误,但 Outlook 总是在同步结束时崩溃,有时在同步结束时崩溃。 任何帮助将不胜感激。 同步代码 private Task SynchronizeContactsSync() { return Task.Run(async () => { if (!synchronizing) { synchronizing = true; Outlook.Folder toFolder = null; Outlook.Folder fromFolder =
  • 将 Outlook 邮件拖放到浏览器中(Drag-and-drop Outlook message into browser)
    问题 我希望能够将 Outlook 消息拖放到浏览器中并触发 Javascript 事件,例如,使用消息的 GUID 创建指向消息的链接。 但我停留在第一步 - 尝试将 Outlook 邮件拖到文件夹列表之外的任何位置会显示不允许的光标。 我正要放弃,但我发现一些帖子建议启用该操作的方法,例如如何将电子邮件从 Outlook 拖放到 .NET 应用程序中? 有没有办法使这成为可能? (包括编写浏览器扩展,虽然不理想。) 回答1 适用于较旧浏览器和较旧 Outlook 的免费插件解决方案: https://tonyfederer.github.io/OutlookFileDrag/ 从网站: 当您尝试从 Outlook 拖放时,Outlook 正确地将该格式识别为虚拟文件 (CFSTR_FILEDESCRIPTORW),因为这些文件不直接存在于磁盘上。 相反,它们包含在 PST 文件、OST 文件或 Exchange 服务器上。 但是,许多应用程序不支持,例如 Web 浏览器和大多数 .NET/Java 应用程序。 为了解决此问题,Outlook 文件拖动挂钩 Outlook 拖放过程并添加了对物理文件 (CF_HDROP) 的支持。 当应用程序要求提供物理文件时,这些文件将保存到临时文件夹中。 我查看了 https://outlook2web.com/ 和 https://www
  • How to autorun Office 365 outlook add-in
    I'm creating an Office 365 add-in for Outlook. I want my add-in to run automatically when user reads email (opens it in reading pane). My current version displays add-in name in top of mail body and when I click it add-in runs. Office.initialize = function (reason) { $(document).ready(function () { displayItemDetails(); }); }; I would also like to hide that add-in button and just run it behind the scene.
  • Outlook 加载项 API 不会在 Firefox/Chrome 上一致地触发 ItemChange 事件(Outlook Add-In API does not fire the ItemChange event consistently on Firefox/Chrome)
    问题 我们在清单中为 Outlook 加载项启用了任务窗格固定,并注意到除了 Windows Outlook 2016 客户端之外,现在 Outlook Office Online 中也提供了固定支持。 但是,在切换邮件项目时,ItemChange 事件似乎并没有被一致地触发(我无法辨别它何时被触发的任何韵律或原因)。 我们正在使用 addHandlerAsync 方法监听这个事件。 这是一个错误吗? 回答1 我遇到了同样的问题。 考虑重新注册事件处理程序并且它起作用了。 这是我正在使用的代码。 Office.onReady(function() { //console.log('In Office.onReady'); if(!Office.context.mailbox) { console.log('Run inside Outlook to be able to use it.'); return; } console.log('Running in Office Add-in'); // Set up ItemChanged event Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, selectedMailItemChanged); console.log('Item Change
  • Outlook Add-In Crashes or Your server administrator has limited the number of items you can open simultaneously
    I have created a simple Outlook Add-in for copying contacts from one folder to another.(~5000 contacts) Why I need this? There is a weird way for creating a public address book as described here. So why not copy all the contacts in the public folder? I want my team to have a shared addressbook with my contacts but with only Fullname and emails as information. I have added a toolbar with two Buttons. Choose folders and Synchronize. My Problem is that when running Synchronization after a while I get Your server administrator has limited the number of items you can open simultaneously. Try
  • C# VSTO 插件 - 将纯文本电子邮件转换为 HTML(C# VSTO Add-in - Convert plain text email to HTML)
    问题 我们为 Outlook 2010/2007 编写了一个 VSTO 插件。 在某一时刻,我们的插件必须将纯文本电子邮件从功能区控件转换为 HTML。 这会导致 Outlook 中出现一些奇怪的行为: 我们正在使用 MailItem COM 对象我们设置 MailItem.HTMLBody 电子邮件被转换为 HTML,但由于某种原因字体是 Times New Roman at 10pt Outlook 中的默认字体是 Calibri 11pt,这使得我们的电子邮件转换对用户来说看起来很奇怪。 当您使用 Outlook 中的现有按钮转换为 HTML 时,它会按预期工作,但在使用我们的插件按钮时则不会。 所以我们尝试了以下方法: 提前设置 MailItem.BodyFormat 用以下内容包裹我们的电子邮件文本: <span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'></span> (我们从查看新 Outlook 的源代码中得到这个想法电子邮件) 将<span>标签包裹在电子邮件正文中可以将字体更改为 Calibri,但字体大小保持在 10pt ... 有一个更好的方法吗? 另一种解决方法? 编辑,工作代码: if (_mailItem.BodyFormat != OlBodyFormat
  • 使 Outlook 加载项与 Office 365 共享邮箱一起使用(Make Outlook add-ins working with Office 365 shared mailboxes)
    问题 我正在使用 Office 加载项的新技术(以前的 Office 应用程序)构建应用程序。 当为 Office 365 租户全局注册或由用户单独注册时,加载项激活良好(机械齿轮 > 管理加载项)。 我希望我的加载项与 Office365 的共享邮箱一起使用。 当共享邮箱单独打开时,加载项不会在 Outlook 桌面或 OWA 中加载。 但是,我设法在将共享邮箱设置为显示在我的主邮箱下的共享文件夹时使其工作,如下所述(见下图)。 这总比没有好,但不是一个可接受的解决方案,我希望在使用“打开另一个邮箱”(参见上面的链接)时在桌面客户端和 OWA 中查询我的邮箱时显示我的加载项。 我的问题是:如何使加载项与共享邮箱一起使用? 一个可能的解决方案是:共享邮箱似乎与特殊类型的用户有关。 是否可以为此特殊用户安装加载项以使加载项始终与共享邮箱一起使用? 编辑:暂时不支持。 我在 Office365 用户语音中创建了一个功能请求。 考虑把你的票投给它。 回答1 Outlook 加载项不应在主邮箱之外激活。 这是故意禁用的。 在您的主邮箱下打开时您所看到的显示 Benoit 可能是一个错误。 回答2 有一个新功能请求来涵盖此功能。 此功能请求已在理论上实现并处于公开预览中。 理论上,如果您在<DesktopFormFactor>下添加以下内容,它将启用此功能:
  • Outlook 2007 vsto 加载项。 获取电子邮件发件人地址(Outlook 2007 vsto add-in. Get email sender address)
    问题 我有一个 VSTO Outlook 2007 加载项。 当新电子邮件进入收件箱时,我正在尝试获取发件人电子邮件地址。 为此,我使用以下代码: void inboxItems_ItemAdd(object Item) { Outlook.MailItem mailItem = Item as Outlook.MailItem; if (mailItem != null) string emailAdress = mailItem.SenderEmailAddress; } 问题是当电子邮件来自同一个域时,emailAdress 包含 LDAP 地址,如 /O=第一个组织/OU=第一个管理组/CN=收件人/CN=管理员 虽然我想获得 SMTP 地址,例如 管理员@orgname.com 我的问题是如何从内部域获取电子邮件的 SMTP 发件人地址? 聚苯乙烯在 Outlook 2010 中,这个问题可以通过使用 Sender 属性来解决。 但它在 2007 年不受支持。 item.Sender.GetExchangeUser().PrimarySmtpAddress 回答1 在 Outlook 2007 中,您可以这样做: private string GetSmtpAddress(Outlook.MailItem oItem) { Outlook.Recipient recip