Outlook API, 移動到 "已發送項目 "的郵件仍然被標記為"[草稿]"

问题描述 投票:0回答:1

我正在使用office.js开发一个Outlook插件,用户可以使用后台服务发送安全邮件。

在撰写模式下,当用户发送邮件时,当然是使用加载项,加载项会使用Outlook API message{id}move将邮件移动到 "已发送项目 "文件夹中,一切都很正常,但有问题的邮件仍然被Outlook标记为 "草稿",这真的很烦人,而且确实让刚刚发送邮件的用户感到困惑,告诉他 "这封邮件还没有被发送"

enter image description here

我通过API搜索,看看是否有办法将邮件标记为 "已发送",以防止Outlook显示这个红色的提示,但到目前为止,没有任何运气!所以,我的问题是:有什么办法克服这个误导性的msg,将邮件标记为由Outlook发送?

所以,我的问题是:有什么办法来克服这个误导性的msg通过标记的电子邮件,因为它是由Outlook发送?

先谢谢你。

outlook office-js outlook-web-addins outlook-restapi microsoft-graph-mail
1个回答
0
投票

最后,我终于实现了这个难题的完美解决。

根据

我遵循的方法步骤,标记一个邮件项目作为 "发送" (且未显示为 "草稿"),并将其放在 "发送项目" 文件夹的使用方法如下。

  • 首先,将邮件项目保存为 "草稿",使用 Office.context.mailbox.item.currentMail.saveAsync 然后检索其 身份证
  • 克隆这个草案的mailItem属性,例如:'发送者'。'发送者', '主题', '身体', 'ToRecipients'...等,这样你就能得到一个准确的副本。
  • 在新克隆的mailItem中,添加了以下内容 '[SingleValueExtendedProperties]'。 属性的值。
[
  {
     PropertyId: 'Integer 0x0E07',
     Value: '1'
  }
];
  • 将新项目序列化为JSON,并将其发送至 "senditems" 文件夹如下。
xhr.open('POST', restHost + '/v2.0/me/MailFolders/sentitems/messages/');
xhr.send(clonedEmailJson);
  • 成功后,与 xhr.status=201 [创建],使用[DELETE]请求删除邮件草案。

而你最终会在你的 "sendItems "文件夹中创建一个新的邮件项目,它看起来就像由Outlook发送的一样 :)

这对我来说是一个非常有用的解决方案,因为我的用户正在使用我的插件来发送安全的电子邮件(使用第三方API),而不是Outlook,所以,我希望他们有相同的UX感觉,当他们使用Outlook。

注意:虽然这个解决方案对我来说是完美的,但我还是希望他们能有和使用Outlook时一样的用户体验。

虽然这个解决方案对我来说是完美的,但它是有代价的! 在慢速网络连接或包含大附件的电子邮件的情况下,这个过程可能会非常慢,因为该插件会首先将草稿保存到远程Exchange服务器,获得它的ID,然后复制它并再次发送它到服务器,然后删除草稿。

© www.soinside.com 2019 - 2024. All rights reserved.