gpt4 book ai didi

javascript - Google Scripts - 从退回的邮件中获取电子邮件地址并解析信息

转载 作者:行者123 更新时间:2023-11-30 06:23:55 25 4
gpt4 key购买 nike

早上好

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

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

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

这是退回邮件文本的示例:

原始消息于 2018 年 7 月 31 日星期二 07:16:38 -0400 收到来自本地主机 [127.0.0.1]

----- 以下地址有永久性 fatal error ----- (原因:554 5.7.1 :收件人地址被拒绝:用户margolulubelle@gwi.net不存在)

----- session 记录如下 -----... 在与 mx.gwi.net.cust.b.hostedemail.com 交谈时:

DATA <<< 554 5.7.1 < margolulubelle@gwi.net >: Recipient address rejected: user margolulubelle@gwi.net does not exist 554 5.0.0 Service unavailable <<< 554 5.5.1 Error: no valid recipients

------------转发的消息------------来自:library.noreply@library.org至:margolulubelle@gwi.net抄送:密件抄送:日期:2018 年 7 月 31 日,星期二 07:16:38 -0400主题:您图书馆的流通通知

07-31-18 07:16PM

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 BLU 条形码:3400599999 弗里蒙特 PL child 室

88:1

这是 Amit 的代码:

/*

* 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[\s\S]+?(\S+\@\S+)\s([\s\S]+?)-----/)||i.match(/Your message wasn't delivered to (\S+\@\S+) ([\s\S]+)/);
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

关于javascript - Google Scripts - 从退回的邮件中获取电子邮件地址并解析信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com