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

如何在Google Apps Script的replyAll中指定原始邮件收件人?

解决Gmail线程回复时指定原始收件人的问题

核心问题说明

GmailApp的reply()和replyAll()方法是绑定线程最后一封邮件的收件人/回复对象的,无法直接自定义收件人列表。你之前用的replyTo参数只是设置"回复此邮件时的目标地址",并非当前邮件的收件人,所以达不到需求。

解决方案:创建独立邮件并关联到线程

改用GmailApp.sendEmail()或createDraft()方法,自定义收件人为原始邮件的地址,同时通过threadId参数将邮件关联到目标线程,这样邮件会出现在原线程中,同时收件人是你想要的原始地址。

修改后的代码示例

function sendFollowUpEmails() {
  var query = 'label:lasso-fu-08-19-2023';
  var threads = GmailApp.search(query, 0, 50);

  var followUpMessage = `Hello Fren :)

  How are you doing today?
  `;
  var htmlBody = followUpMessage.replace(/\n/g, '<br>');
  var plainBody = followUpMessage; // 同时提供纯文本版本,适配不同邮件客户端

  for (var i = 0; i < threads.length; i++) {
    var thread = threads[i];
    var firstMessage = thread.getMessages()[0];
    var toField = firstMessage.getTo();
    var ccField = firstMessage.getCc() || '';
    
    // 发送邮件并关联到线程
    GmailApp.sendEmail(
      toField, // 原始收件人作为TO
      "Follow-up", // 自定义邮件主题
      plainBody,
      {
        cc: ccField,
        htmlBody: htmlBody,
        threadId: thread.getId() // 关键:关联到原线程,保持对话连贯性
      }
    );
  }

  Logger.log("Follow-up emails successfully sent to " + threads.length + " threads");
}

代码说明

  1. 获取原始收件人:通过thread.getMessages()[0].getTo()和getCc()拿到原始邮件的收件人和抄送人
  2. 关联线程:threadId参数会让新发送的邮件自动加入目标Gmail线程,不会变成独立邮件
  3. 双格式支持:同时提供纯文本和HTML版本,确保不同邮件客户端都能正常显示内容

替代方案:创建草稿再发送

如果需要先预览邮件内容再发送,可以用createDraft方法:

// 替换循环内的sendEmail部分
var draft = GmailApp.createDraft(
  toField,
  "Follow-up",
  plainBody,
  {
    cc: ccField,
    htmlBody: htmlBody,
    threadId: thread.getId()
  }
);
draft.send(); // 直接发送草稿

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:52:41