从Gmail API获取邮件发件人地址

时间:2016-08-17 09:58:22

标签: google-apps-script gmail-api

让我先说一下我的问题,我说我不是JS开发者,甚至不是网络开发者,所以请耐心等待!我试图创建一个gs脚本来删除超过n个月且具有特定标签且来自给定发件人的邮件。

我认为我已将其删除,但Gmail API char str[] = "TZ=UTC"; // initialize a char array, which will contain a copy of the string "TZ=UTC" putenv(str); 方法似乎以$I->executeJS("$(body).setStyle({zoom: '90%'});"); 格式返回发件人的地址,而不仅仅是getFrom()。目前我可以解决这个问题,因为我知道这些信息,但有没有更好的方法来实现这一点,以便代码在实际的电子邮件地址上

我目前的代码:

"First Last" <address@mail.tld>

我看过一个使用正则表达式修复此问题的问题,但我几乎不了解正则表达式,更不用说如何应用于此上下文或示例如何工作(或者没有!)。

对此代码的其他改进建议也欢迎。

1 个答案:

答案 0 :(得分:2)

我认为从From标题中提取电子邮件地址是您最安全的选择。你可以用例如this great RegEx

function extractEmailAddress(header) {
  return header.match(/[^@<\s]+@[^@\s>]+/)[0];
}

function auto_delete_emails() {

  var label = GmailApp.getUserLabelByName("foo");
  var sender = extractEmailAddress("\"Foo Bar\" <info@foo.bar>");

  if (label != null) {
    var delayDays = 30;
    var maxDate = new Date();

    maxDate.setDate(maxDate.getDate() - delayDays);

    var threads = label.getThreads();
    for (var i = 0; i < threads.length; i++) {
      var messages = GmailApp.getMessagesForThread(threads[i]);
      var from = extractEmailAddress(messages[0].getFrom());
      if (from === sender) {
        if (threads[i].getLastMessageDate < maxDate) {
          threads[i].moveToTrash();
        }
      }
    }
  }
}