谷歌脚本-从退回的邮件中抓取电子邮件地址并解析信息 [英] Google Scripts - Grab email address from bounced message and parse information

查看:38
本文介绍了谷歌脚本-从退回的邮件中抓取电子邮件地址并解析信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好,

我对Java脚本、Google脚本和正则表达式一无所知。我在https://www.labnol.org/internet/gmail-bounced-email-report/29209/上从Amit Agarwal那里找到了非常好的信息,但我很难确定我特别需要保留或需要更新的内容。我不想使用退回邮件守护程序地址,而是希望从我的Gmail帐户中的两个标签(MinervaBoss和MILSB)中获取退回的邮件,并能够区分邮件来自哪一个。如有任何帮助,将不胜感激。

以下是退回邮件中需要的项目:

  1. 电子邮件日期
  2. 标签名称
  3. 退回电子邮件地址
  4. 退回原因
  5. 邮件正文中的库名
  6. 退回邮件

以下是退回邮件文本的示例:

接收时间:2018-07-31 07:16:38-0400 从本地主机[127.0.0.1]

-以下地址具有永久性致命错误 (原因:554 5.7.1<;margolulubelle@gwi.net>:收件人地址被拒绝:用户margolulubelle@gwi.net不存在)

-会议记录如下 ..。正在与mx.gwi.net.minst.b.hostedemail.com交谈。:

数据 <;<;<;554 5.7.1<;marGolulubelle@gwi.net>:收件人地址被拒绝:用户margolulubelle@gwi.net不存在 554 5.0.0服务不可用 <;<;<;554 5.5.1错误:没有有效的收件人

-转发消息 发信人:Library.noreply@Library.org 收信人:margolulubelle@gwi.net CC: 密件抄送: 日期:2018年7月31日星期二07:16:38-0400 主题:贵馆借阅通知

07-31-18 07:16 PM

Fremont Memorial Library
555 Fremont Ave
Freedom, ME 04941

        Margo Madeup-Name
        555 Dartmouth Ln
        Dixfield, ME 04224

 ******************************************************************
                 LIBRARY REQUEST / HOLD CANCELLED
 ******************************************************************
 YOUR REQUEST FOR THE FOLLOWING MATERIAL COULD NOT BE FILLED, OR THE
 HOLD WAS FULFILLED, BUT NOT PICKED UP IN TIME. CONTACT YOUR LIBRARY
 TO PURSUE OTHER AVENUES TO OBTAIN OR RE-REQUEST THE ITEM.

作者: 蓝绿黄红 电话号码:FIC蓝色 条码:3400599999 Fremont PL少年儿童RM

88:1

以下是Amit的代码:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
/*

* Gmail Bounced Emails
* @labnol December 14, 2016
* Written by Amit Agarwal

* email: amit@labnol.org
* twitter: @labnol
* web: https://ctrlq.org

*/

function onOpen(e) {  
  SpreadsheetApp.getUi().createMenu("🚀 Gmail")
  .addItem("Bounce Report", "b_")
  .addItem("Help and Support", "h_")
  .addToUi();  
  h_(false);
}

function b_(){var e=SpreadsheetApp.getActiveSheet();e.getRange(2,1,e.getLastRow(),e.getLastColumn()).clearContent();
var t="in:anywhere from:(mailer-daemon@google.com OR mailer-daemon@googlemail.com)",a='=HYPERLINK("URL";"View")',o=0;GmailApp.search(t,0,500).forEach(function(t){t.getMessages().forEach(function(r){if(r.getFrom().indexOf("mailer-daemon")!==-1){var i=r.getPlainBody(),l=i.match(/Delivery to[sS]+?(S+@S+)s([sS]+?)-----/)||i.match(/Your message wasn't delivered to (S+@S+) ([sS]+)/);
if(l){var n=l[2].match(/The response.+:s+(.+)/)||l[2].match(/The error.+:s+(.+)/)||l[2].match(/Technical details.+:s+(.+)/)||["",l[2].trim()];o++,e.appendRow([t.getLastMessageDate(),l[1],n[1].replace(/ (Please|Learn|See).*$/,""),a.replace("URL",t.getPermalink()),t.getFirstMessageSubject()])}}}),Utilities.sleep(100)}),0===o&&(o="ZERO"),h_(o)}

function h_(e){var t=HtmlService.createTemplateFromFile("help");t.report=e?"The Google Script found COUNT bounced emails in your mailbox.".replace("COUNT",e):"Please go to the 🚀 Gmail menu and select Bounce Report to get started.";
var a=t.evaluate().setTitle("Bounce Report for Gmail").setWidth(460).setHeight(225);SpreadsheetApp.getActiveSpreadsheet().show(a)}

谢谢, 林恩

推荐答案

只需根据需要调整查询,可能如下所示:

from:(mailer-daemon@googlemail.com OR mailer-daemon@google.com) AND (label:"SO Review" OR label:"Sample Wala")
这将从多个标签获取退回电子邮件(需要OR运算符才能使其在任何标签上匹配,而不需要在电子邮件中同时找到这两个标签)。 使用Users.messages: list和查询获取与您的查询匹配的messageID列表,然后使用threadID在邮件发送失败之前获取原始邮件。最后,使用Users.messages查看有关原始邮件的详细信息。

引用:

https://developers.google.com/gmail/api/v1/reference/users/messages/list https://webapps.stackexchange.com/questions/10581/filtering-based-on-multiple-labels-in-gmail

这篇关于谷歌脚本-从退回的邮件中抓取电子邮件地址并解析信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆