Gmail脚本无需附件即可转发

时间:2016-12-06 02:36:09

标签: gmail gmail-api

我正在为gmail编辑在线可用的snooze脚本,我希望在收件箱中和列表顶部带回未读的电子邮件。我能够将其取消,并根据可用的脚本返回收件箱,但要将收件箱置于收件箱之上,我将电子邮件转发给自己。通过这种方式,我可以将电子邮件主题放在列表顶部,但是当一个被延后的电子邮件有附件时,它会转发带有附件的电子邮件。我有大量的电子邮件,可用空间有限。因此,我最终使用额外的存储空间来重复附件,这是不需要的。

我想转发电子邮件,没有附件。以下是我目前的剧本:

          var firstThread = page[i];
          var giattachment = null;
          var sub = firstThread.getFirstMessageSubject();
          var newsub = "Reminder: " + firstThread.getFirstMessageSubject() + " : ";

          var id = newsub + firstThread.getPermalink();

          var messages = firstThread.getMessages();
          var totalThreadCount= firstThread.getMessageCount();

          for (var j = 0; j < messages.length; j++) {
            var forwardlength=messages.length-1;
            if(j == forwardlength) {
              if (MARK_UNREAD) {
                messages[j].markUnread();
              } 
              messages[j].forward(userEmail,{subject: newsub, from:userEmail, name: EmailFrom, body: newbody, attachments:giattachment});
            }
          }

尽管如此,电子邮件会通过附件转发。请指教..

提前致谢

2 个答案:

答案 0 :(得分:0)

要有选择地转发邮件,请使用filters创建为响应邮件属性或内容而转发的规则。

您可以按发件人,主题日期,大小和邮件内容等属性过滤邮件。使用Gmail advanced search syntax的任何查询也可以在过滤器中使用。尝试将criteria.hasAttachment=true设置为false。

有关详情,请点击以下链接:https://developers.google.com/gmail/api/v1/reference/users/settings/filters

答案 1 :(得分:0)

您不能使用 Class GmailMessage 转发,因为它强制您转发原始附件。不幸的是没有记录,它的高级参数 attachments 只能添加附件。

但是,您可以通过使用 Class MailApp 创建新消息来转发,在您的情况下是:

      var from, firstThread = page[i];
      var sub = firstThread.getFirstMessageSubject();
      var newsub = "Reminder: " + firstThread.getFirstMessageSubject() + " : ";

      var id = newsub + firstThread.getPermalink();

      var messages = firstThread.getMessages();
      var totalThreadCount= firstThread.getMessageCount();

      for (var j = 0; j < messages.length; j++) {
        var forwardlength=messages.length-1;
        if(j == forwardlength) {
          if (MARK_UNREAD) {
            messages[j].markUnread();
          }
          from = message.getHeader('From');
          if (from.indexOf(' <') > -1)
              from = from.substring(0, from.indexOf(' <'));
          else
              from = '';
          MailApp.sendEmail(userEmail, newsub, '', {htmlBody: messages[j].getBody(), name: from, replyTo: message[j].getFrom()});
        }
      }

变化:

  1. 删除了您的var giattachment = null;
  2. 将您的 messages[j].forward 替换为 MailApp.sendEmail
  3. 使用messages[j].getBody()来模拟原始身体
  4. 将原始发件人的姓名添加为“发件人”姓名
  5. 添加了原始发件人的地址作为回复

最后 2 点表示转发的消息将从 "someone else's name" <your@address> 到达,对于大多数收件人来说,这看起来像是真正的转发。