<small id='NUKI6'></small><noframes id='NUKI6'>

    <tfoot id='NUKI6'></tfoot>

        • <bdo id='NUKI6'></bdo><ul id='NUKI6'></ul>
      1. <legend id='NUKI6'><style id='NUKI6'><dir id='NUKI6'><q id='NUKI6'></q></dir></style></legend>
        <i id='NUKI6'><tr id='NUKI6'><dt id='NUKI6'><q id='NUKI6'><span id='NUKI6'><b id='NUKI6'><form id='NUKI6'><ins id='NUKI6'></ins><ul id='NUKI6'></ul><sub id='NUKI6'></sub></form><legend id='NUKI6'></legend><bdo id='NUKI6'><pre id='NUKI6'><center id='NUKI6'></center></pre></bdo></b><th id='NUKI6'></th></span></q></dt></tr></i><div id='NUKI6'><tfoot id='NUKI6'></tfoot><dl id='NUKI6'><fieldset id='NUKI6'></fieldset></dl></div>

        使用 Google Apps 脚本删除 Gmail 电子邮件的附件

        时间:2023-11-28
        <tfoot id='AObXW'></tfoot>

        <small id='AObXW'></small><noframes id='AObXW'>

            <tbody id='AObXW'></tbody>

                  <bdo id='AObXW'></bdo><ul id='AObXW'></ul>
                  <i id='AObXW'><tr id='AObXW'><dt id='AObXW'><q id='AObXW'><span id='AObXW'><b id='AObXW'><form id='AObXW'><ins id='AObXW'></ins><ul id='AObXW'></ul><sub id='AObXW'></sub></form><legend id='AObXW'></legend><bdo id='AObXW'><pre id='AObXW'><center id='AObXW'></center></pre></bdo></b><th id='AObXW'></th></span></q></dt></tr></i><div id='AObXW'><tfoot id='AObXW'></tfoot><dl id='AObXW'><fieldset id='AObXW'></fieldset></dl></div>

                  <legend id='AObXW'><style id='AObXW'><dir id='AObXW'><q id='AObXW'></q></dir></style></legend>
                  本文介绍了使用 Google Apps 脚本删除 Gmail 电子邮件的附件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  使用 Google Apps 脚本 (http://script.google.com),我从 文档,如何发送、转发、移至垃圾邮件等,但我不知道't find 如何删除电子邮件的文件附件,即:

                  Using Google Apps Script (http://script.google.com), I know from the docs, how to send, forward, move to trash messages, etc. but I don't find how to remove a file attachement of an email, i.e.:

                  1. 保留文本内容(HTML 或纯文本都可以)
                  2. 保留原发件人,保留收件人
                  3. 保留原始消息日期/时间(重要!)
                  4. 删除附件

                  如果不能通过 API,有没有办法在保留 1、2 和 3 的同时将消息重新发送给自己?

                  注意:GmailAttachment 类看起来很有趣,并允许列出收件人:

                  Note: the GmailAttachment class looks interesting and allows to list recipients:

                  var threads = GmailApp.getInboxThreads(0, 10);
                   var msgs = GmailApp.getMessagesForThreads(threads);
                   for (var i = 0 ; i < msgs.length; i++) {
                     for (var j = 0; j < msgs[i].length; j++) {
                       var attachments = msgs[i][j].getAttachments();
                       for (var k = 0; k < attachments.length; k++) {
                         Logger.log('Message "%s" contains the attachment "%s" (%s bytes)',
                                    msgs[i][j].getSubject(), attachments[k].getName(), attachments[k].getSize());
                       }
                     }
                   }
                  

                  但我不知道如何删除附件.

                  but I don't find how to remove an attachment.

                  注意:我已经研究了许多其他解决方案,我已经阅读了几乎所有关于此的文章(具有专用 Web 服务的解决方案,具有本地客户端,如 Thunderbird + 附件提取器插件等),但没有一个真的很酷.这就是为什么我一直在寻找通过 Google Apps 脚本手动执行此操作的解决方案.

                  推荐答案

                  看起来消息必须是 重新创建-ish:

                  Looks like messages will have to be re-created-ish:

                  消息是不可变的:它们只能被创建和删除.除了应用于给定消息的标签之外,不能更改任何消息属性.

                  Messages are immutable: they can only be created and deleted. No message properties can be changed other than the labels applied to a given message.

                  将 高级 Gmail 服务 与 Gmail API insert() 您可以使用以下方法破解它:Gmail.Users.Messages.insert(resource, userId)

                  Using Advanced Gmail Service with the Gmail API insert() you can hack your way around it using: Gmail.Users.Messages.insert(resource, userId)

                  此高级服务必须启用 使用前.

                  This advanced service must be enabled before use.

                  示例:[使用 email_id 或您希望获取电子邮件的任何方式填写 EMAIL_ID]

                  Example: [fill in the EMAIL_ID with an email_id or in whatever way you want to get the email]

                  function removeAttachments () {
                    // Get the `raw` email
                    var email = GmailApp.getMessageById("EMAIL_ID").getRawContent();
                  
                    // Find the end boundary of html or plain-text email
                    var re_html = /(-*w*)(
                  )*(
                  )*(?=Content-Type: text/html;)/.exec(email);
                    var re = re_html || /(-*w*)(
                  )*(
                  )*(?=Content-Type: text/plain;)/.exec(email);
                  
                    // Find the index of the end of message boundary
                    var start = re[1].length + re.index;
                    var boundary = email.indexOf(re[1], start);
                  
                    // Remove the attachments & Encode the attachment-free RFC 2822 formatted email string
                    var base64_encoded_email = Utilities.base64EncodeWebSafe(email.substr(0, boundary));
                    // Set the base64Encoded string to the `raw` required property
                    var resource = {'raw': base64_encoded_email}
                  
                    // Re-insert the email into the user gmail account with the insert time
                    /* var response = Gmail.Users.Messages.insert(resource, 'me'); */
                  
                    // Re-insert the email with the original date/time 
                    var response = Gmail.Users.Messages.insert(resource, 'me', 
                                        null, {'internalDateSource': 'dateHeader'});
                  
                    Logger.log("The inserted email id is: %s",response.id)
                  }
                  

                  这将从电子邮件中删除附件并将其重新插入您的邮箱.

                  This will remove the attachments from the email and re-insert it into your mailbox.

                  编辑/更新:新的正则表达式可以处理 html 和纯文本电子邮件 - 现在应该可以处理多个边界字符串

                  edit/update: New RegExp to work with html&plain-text only emails - should now work on multiple boundary strings

                  这篇关于使用 Google Apps 脚本删除 Gmail 电子邮件的附件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Gmail 将某些 HTML 元素包装在一个名为 im 的类中 下一篇:css - 邮件模板中的负边距问题

                  相关文章

                  <i id='9S6B9'><tr id='9S6B9'><dt id='9S6B9'><q id='9S6B9'><span id='9S6B9'><b id='9S6B9'><form id='9S6B9'><ins id='9S6B9'></ins><ul id='9S6B9'></ul><sub id='9S6B9'></sub></form><legend id='9S6B9'></legend><bdo id='9S6B9'><pre id='9S6B9'><center id='9S6B9'></center></pre></bdo></b><th id='9S6B9'></th></span></q></dt></tr></i><div id='9S6B9'><tfoot id='9S6B9'></tfoot><dl id='9S6B9'><fieldset id='9S6B9'></fieldset></dl></div>
                    <bdo id='9S6B9'></bdo><ul id='9S6B9'></ul>
                  <legend id='9S6B9'><style id='9S6B9'><dir id='9S6B9'><q id='9S6B9'></q></dir></style></legend>

                    1. <tfoot id='9S6B9'></tfoot>
                    2. <small id='9S6B9'></small><noframes id='9S6B9'>