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

含内嵌图片的邮件发送时无法设置Internet Headers(Outlook Web加载项&Office JS)

Outlook Web加载项内嵌图片加密及Internet Headers设置问题解决方案

一、内嵌图片加密问题处理

当邮件包含内嵌图片时,Outlook通过cid(Content-ID)关联HTML正文与邮件内嵌附件,而非依赖src中的临时链接(该链接仅在发件人端有效,收件人无法访问)。要解决解密后加载项面板图片破损的问题,需遵循以下要点:

  • 加密HTML正文时,保留img标签的originalsrc(cid值)、contenttype等核心属性,仅加密正文的文本内容和非关联属性。这些cid属性是Outlook识别内嵌附件的关键,一旦被破坏或篡改,收件端无法匹配到对应的图片资源。
  • 解密后确保HTML中的img标签cid与邮件内嵌附件的Content-ID完全一致,Outlook会自动通过cid加载内嵌图片,无需依赖原临时src链接。
  • 加密过程中避免修改img标签的结构,不要删除或替换cid相关属性,仅对正文的文字内容进行加密处理。

二、带内嵌图片时设置Internet Headers报错解决

针对Sys.ArgumentTypeException: Object of type 'object' cannot be converted to type 'string'.错误,核心原因是internetHeaders.setAsync参数不符合要求或邮件状态冲突,可按以下步骤修复:

  1. 校验参数格式:确保传入setAsync的对象中,所有header的value均为字符串类型,禁止传入数字、布尔值等非字符串数据。示例:
    // 正确写法
    mail_item.internetHeaders.setAsync({"X-Encrypt-Key": "abc123"}, function(res) {});
    // 错误写法(value为数字)
    mail_item.internetHeaders.setAsync({"X-Encrypt-Version": 1}, function(res) {});
    
  2. 调整操作顺序:原流程中先设置headers再保存邮件,可能因内嵌图片导致邮件状态不稳定。建议调整为:
    • 获取并加密HTML正文
    • 设置加密后的正文(body.setAsync)
    • 调用saveAsync保存邮件,确保内容(包括内嵌图片)稳定
    • 加载自定义属性并设置
    • 设置Internet Headers
    • 再次调用saveAsync保存最终修改
  3. 排查header合法性:确保header的key符合RFC规范,不能包含空格、特殊字符(如:、@等),且避免使用Outlook内置的保留header名称。
  4. 合并现有headers:先通过internetHeaders.getAsync获取当前邮件的所有headers,将新headers合并到现有对象中,再调用setAsync,避免冲突:
    mail_item.internetHeaders.getAsync(function(getRes) {
      if (getRes.status === Office.AsyncResultStatus.Succeeded) {
        const existingHeaders = getRes.value;
        // 合并新header
        existingHeaders["X-Encrypt-Status"] = "encrypted";
        mail_item.internetHeaders.setAsync(existingHeaders, function(setRes) {
          // 处理结果
        });
      }
    });
    

内容的提问来源于stack exchange,提问作者Smit Rathod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:54:55