通过 Gmail 网站发送草稿时,如何在 GmailApp.createDraft() 创建的 Gmail 草稿中保留回复设置?

How can I keep the Reply-To setting in Gmail drafts created by GmailApp.createDraft() when sending the draft via Gmail website?

作为在 Gmail 上发送大量电子邮件的一部分,我想根据收件人 using Gmail's alias feature 和 Google Apps 脚本配置回复地址。

我遇到了一个问题,即在尝试通过 Gmail 网站发送创建的草稿时,由 Google Apps 脚本创建的 Gmail 草稿中的回复设置被禁用(无效),我想知道如果有人可以帮助我解决问题。

正在复制

我的脚本如下所示。为了提供示例,我的 Gmail 帐户是 me@gmail.com:

    var subject = 'An Eye-catching Email Subject';
    var recipients = [{
        email: 'mail1@sample.com',
        replyTo: 'me+asia@gmail.com',
        body: 'email text for mail1@sample.com'
      },
      {
        email: 'mail2@example.com',
        replyTo: 'me+europe@gmail.com'
        body: 'email text for mail2@example.com'
      }
      // which goes on for an order of under 100 recipients
    ];
    recipients.forEach(recipient => GmailApp.createDraft(recipient.email, subject, recipient.body, {
      replyTo: recipient.replyTo
    }));

当我在 Gmail 网站上打开其中一封创建的草稿邮件,然后点击 Send 按钮发送邮件时,发送的电子邮件设置为回复 me@gmail.com 而不是指定回复别名,如 me+asia@gmail.com.

备选方案

如果我使用上面使用的sendEmail() method instead of the createDraft(),一切正常。指定的 replyTo 选项反映在实际发送的电子邮件中。

我使用 createDraft() 而不是 sendEmail() 的唯一原因是在创建草稿后,我想确保一切正常,然后再单独点击 Send 按钮.我知道我应该忘记使用 createDraft();我只是想不通 Google 打算用 createDraft()replyTo 选项做什么,如果有人知道我在坚持 createDraft() 时可以采取的其他解决方案, 感激不尽

问题和解决方法:

在我的环境中,我遇到过同样的情况。当时确认了以下情况

  • 当在 Gmail UI 中的浏览器中手动发送草稿邮件时,Reply-To 从草稿邮件的 header 中删除,草稿邮件被发送。
  • 当我看到草稿消息时,Reply-To 包含在 header 中。
  • 当使用 GmailApp.getDraft(id).send() 等脚本发送包含 Reply-To 的草稿消息时,通过在 header 中包含 Reply-To 来发送消息。这与 GmailApp.sendEmail().
  • 的情况相同

从上述情况来看,作为一个简单的解决方法,使用如下脚本发送草稿消息怎么样?

  1. 创建消息草稿。
  2. 确认每条消息草稿。
    • 这是你问题中的The only reason that I use createDraft() instead of sendEmail() is that after the drafts are created, I want to make sure everything is alright before hitting the Send button, individually.
  3. 当您在草稿消息中发现修改点时,请修改and/or删除它们。
  4. 在您确认所有草稿消息后,当您要发送它们时,您可以使用脚本发送它们。

当上述变通方法反映到脚本中时,它变成如下。

示例脚本:

function myFunction() {
  GmailApp.getDrafts().forEach(e => e.send());
}
  • 当此脚本为运行时,发送当前所有草稿邮件。请注意这一点。

注:

  • 当草稿中有一些你不想发的草稿时,比如我觉得用星标过滤也可以实现。当你想发送带星标的消息草稿时,你也可以使用下面的脚本。

      GmailApp.getDrafts().forEach(e => {
        if (e.getMessage().isStarred()) e.send();
      });
    

参考: