如何通过Outlook Web加载项实现邮件转附件及邮件发送?
Outlook Web加载项发送邮件的实现方案
完全可以通过Outlook Web加载项实现邮件发送,针对你遇到的Mac客户端兼容问题,以下是具体的实现思路和代码示例:
1. 发送全新邮件
借助Office.context.mailbox.displayNewMessageFormAPI唤起预填充内容的新邮件表单,用户可直接完成发送操作:
(function () { "use strict"; // 加载项初始化完成后绑定事件 Office.onReady(() => { document.getElementById("sendNewEmailBtn").addEventListener("click", sendNewEmail); }); function sendNewEmail() { const emailContent = { toRecipients: ["target@example.com"], subject: "通过Web加载项发送的邮件", body: "这是邮件正文内容" }; // 唤起新邮件表单并填充内容 Office.context.mailbox.displayNewMessageForm(emailContent) .catch(err => console.error("邮件发送失败:", err)); } })();
2. 将现有邮件作为附件转发(解决Mac兼容问题)
如果需要实现把当前邮件作为附件转发的功能,可通过copyEnvelope+addFileAttachmentFromItemAsync组合API实现,规避Mac客户端的兼容问题:
(function () { "use strict"; Office.onReady(() => { document.getElementById("forwardAsAttachmentBtn").addEventListener("click", forwardAsAttachment); }); function forwardAsAttachment() { // 复制当前邮件的信封信息 Office.context.mailbox.item.copyEnvelope(result => { if (result.status === Office.AsyncResultStatus.Succeeded) { const newMail = result.value; // 将原邮件作为附件添加到新邮件中 newMail.addFileAttachmentFromItemAsync( Office.context.mailbox.item.itemId, "原邮件副本.eml", { isInline: false }, attachResult => { if (attachResult.status === Office.AsyncResultStatus.Succeeded) { // 显示新邮件表单,用户确认后发送 Office.context.mailbox.displayNewMessageForm(newMail); } else { console.error("添加附件失败:", attachResult.error); } } ); } else { console.error("复制信封信息失败:", result.error); } }); } })();
关键注意事项
- 加载项权限:需在
manifest.xml中声明ReadWriteMailbox权限,否则无法调用邮件发送相关API。 - 兼容性测试:完成开发后需在Outlook Web版和Mac客户端分别验证功能运行状态。
内容的提问来源于stack exchange,提问作者Long Free
相关产品推荐
相关产品推荐

