<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 电子邮件的附件

        Remove an attachment of a Gmail email with Google Apps Script(使用 Google Apps 脚本删除 Gmail 电子邮件的附件)
        <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 电子邮件的附件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Gradient Button to background-color blinks on hover(悬停时背景颜色的渐变按钮闪烁)
                  How to make hovering over active button not use hover effect?(如何使悬停在活动按钮上不使用悬停效果?)
                  html javascript show image hover(html javascript 显示图像悬停)
                  How to get css hover values on click?(如何在点击时获得 css 悬停值?)
                  Change background image on link hover(更改链接悬停时的背景图像)
                  Highlight multiple items on hover#39;s condition(突出显示悬停条件下的多个项目)
                  <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>
                      <tbody id='9S6B9'></tbody>
                    <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'>