如何通过Office.JS开发的Outlook加载项临时添加联系人至收件人字段
解决方案
你可以直接使用Office.js的撰写模式API实现这个需求,无需涉及联系人永久保存的操作——Office.context.mailbox.item.to.addAsync方法添加的收件人仅会出现在当前撰写的邮件中,不会被保存到用户的联系人列表里。
实现步骤与代码示例
- 确保加载项在撰写模式下可用:在加载项清单中配置合适的规则,仅在新建邮件的撰写场景激活加载项(比如设置
Rule为ItemIs且ItemType为Message、FormType为Edit)。 - 调用API添加临时收件人:
// 假设你已获取到目标联系人数据,格式如下 const targetContacts = [ { emailAddress: 'contact1@example.com', displayName: '王大锤' }, { emailAddress: 'contact2@example.com', displayName: '李小花' } ]; function addToRecipients() { // 校验当前是否处于新建邮件的撰写模式 const currentItem = Office.context.mailbox.item; if (currentItem.itemType === Office.MailboxEnums.ItemType.Message && currentItem.isNew) { // 异步添加收件人 currentItem.to.addAsync(targetContacts, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { console.log('收件人添加成功'); } else { console.error('添加失败:', asyncResult.error.message); } }); } else { console.error('仅支持在新建邮件的撰写模式下执行此操作'); } }
关键说明
addAsync方法接受的参数是包含emailAddress(必填)和displayName(可选)的对象数组,只要邮箱格式合法就能成功添加。- 该操作完全基于当前邮件上下文,不会对用户的联系人列表产生任何持久化修改。
- 必须先判断当前场景是否为撰写模式,避免在阅读模式或已发送邮件场景下调用API导致错误。
内容的提问来源于stack exchange,提问作者Lior Asulin
相关产品推荐
相关产品推荐

