You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Office.js将Word文档插入Outlook邮件?

使用Office.js将Word文档插入Outlook邮件的实现方案

可以通过Office.js实现这个需求,核心思路是先将Word文档内容转换为HTML格式,再插入到Outlook邮件正文中。以下是具体实现步骤和代码示例:

1. 获取Word文档的HTML内容

场景一:在Word插件中操作当前打开的文档

如果是在Word插件里处理当前打开的文档,直接通过Word.run获取文档的HTML内容:

async function getWordDocumentHtml() {
    return Word.run(async (context) => {
        const docBody = context.document.body;
        docBody.load('html');
        await context.sync();
        return docBody.html;
    });
}

场景二:处理本地Word文件(.docx)

如果需要插入本地存储的Word文件,Office.js本身没有直接的转换能力,可借助第三方库(如mammoth.js)将.docx文件转换为HTML:

async function convertLocalDocxToHtml(localFile) {
    const arrayBuffer = await localFile.arrayBuffer();
    const convertResult = await mammoth.convertToHtml({ arrayBuffer: arrayBuffer });
    // convertResult.messages 可查看转换过程中的警告信息
    return convertResult.value;
}

2. 将HTML插入到Outlook邮件

在Outlook插件环境中,可通过以下两种方式插入HTML内容:

方式一:覆盖邮件正文

如果需要直接替换邮件的全部正文内容:

async function replaceMailBodyWithHtml(htmlContent) {
    return new Promise((resolve, reject) => {
        Office.context.mailbox.item.body.setAsync(
            htmlContent,
            { coercionType: Office.CoercionType.Html },
            (asyncResult) => {
                if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
                    resolve();
                } else {
                    reject(asyncResult.error);
                }
            }
        );
    });
}

方式二:追加到邮件指定位置

如果需要在邮件光标位置插入HTML内容(不覆盖原有内容):

async function appendHtmlToMail(htmlContent) {
    return new Promise((resolve, reject) => {
        Office.context.mailbox.item.body.setSelectedDataAsync(
            htmlContent,
            { coercionType: Office.CoercionType.Html },
            (asyncResult) => {
                if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
                    resolve();
                } else {
                    reject(asyncResult.error);
                }
            }
        );
    });
}

3. 完整流程示例

结合上述步骤,实现从Word获取内容并插入Outlook邮件的完整逻辑:

async function insertWordContentToOutlook() {
    try {
        // 1. 获取Word文档的HTML内容(根据场景选择对应方法)
        // 场景一:Word插件内获取当前文档HTML
        const wordHtml = await getWordDocumentHtml();
        // 场景二:转换本地文件(需先通过input获取localFile)
        // const localFile = document.querySelector('input[type="file"]').files[0];
        // const wordHtml = await convertLocalDocxToHtml(localFile);

        // 2. 插入到Outlook邮件
        await appendHtmlToMail(wordHtml);
        console.log("Word内容已成功插入邮件");
    } catch (error) {
        console.error("操作失败:", error.message);
    }
}

注意事项

  • 格式兼容性:Word导出的HTML可能包含大量Office专属样式,插入Outlook后可能出现格式偏差,建议转换后对HTML进行简化清理,或测试不同Outlook版本的显示效果。
  • 权限要求:确保Outlook插件拥有ReadWriteMailbox权限,Word插件拥有ReadWriteDocument权限,否则会出现API调用失败的情况。

内容的提问来源于stack exchange,提问作者Matt Fitzmaurice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:15:01