【问题标题】:Gmail: Sync Inbox (IMAP & POP3 disabled)Gmail:同步收件箱(禁用 IMAP 和 POP3)
【发布时间】:2013-07-05 00:26:40
【问题描述】:

问题

需要在两个日期之间从我的 gmail 帐户读取我发送的项目,并且遵循关于主题的类似文本模式,这一切都是为了隔离已回答的已发送项目(存储在 excel 文件中) 并向没有回答的人重新发送一条提醒。

现实世界

上面描述的问题似乎很容易处理,并且使用脚本语言执行的任务很好,除了下面的语句:

  • 我的帐户已禁用 IMAP 和 POP3。

因此,我工作地点的 IT 人员决定从公司的每个帐户中禁用 IMAP 和 POP3。信不信由你,这是有充分理由的,为了避免使用电子邮件客户端(在本例中为 MS Outlook)并节省一些钱 --- 我一直相信开源 ---.

然后,我想知道我工作的公司已禁用 IMAP 和 POP3,如何才能同步我的 gmail 帐户的收件箱。

但是 SMTP...?

据我所知,SMTP 仅用于发送电子邮件,而不用于检索它们。

我尝试了什么?

为了完成这个荒谬的任务而避免使用套接字的想法有点固执和盲目,我最终玩了以下红宝石:

以上两个 gem 非常适合发送/检索电子邮件,但前提是您的帐户启用了 IMAP 或 POP3。

事实

为什么即使禁用了 IMAP 和 POP3,我的设备也能同步我的收件箱。

  • Android 设备通过其 gmail 应用程序进行同步。
  • iOS 设备通过 Microsoft Exchange Server 同步。

问题

  • 是否有任何其他方法可以实现这一点并同时避免使用 Sockets(用于网络抓取我发送的项目)?

【问题讨论】:

  • +1 用于很好地展示事实/背景

标签: ruby google-apps-script gmail


【解决方案1】:

没有 IMAP,您真的别无选择。如果不制作某种屏幕抓取机器人,然后解析该信息将变得一团糟,我没有办法做到这一点。您是否有理由不能使用 Gmail 中内置的标签和过滤系统来为您所关注的电子邮件制作标签?

【讨论】:

  • 您好,实际上我可以使用过滤器来检索这些邮件,但我无法识别已回复的邮件,也不会发送提醒。
【解决方案2】:

解决方案

为了避免在这项任务中使用套接字,我尝试构建一个 Chrome 扩展程序/应用程序,但这会变得像使用套接字一样荒谬。

感谢上帝Google Apps Script 存在。

代码

var VENDOR_NAME_INDEX = 0;
var CONTACTS_INDEX = VENDOR_NAME_INDEX + 1;
var HAS_REPLIED_INDEX = CONTACTS_INDEX + 1;
var COMMENTS_INDEX = HAS_REPLIED_INDEX + 1;

var VENDORS_SPREADSHEET_URL = "https://docs.google.com/a/jabil.com/spreadsheet/ccc?key=0Aj7MWNXx-gzsdHJQbGhQZUVkMjBFeVNZX0dXdDZjYWc#gid=0";
var VENDORS_GMAIL_QUERY = 'in:sent has:attachment after:2013/06/26 before:2013/06/28 subject: "*Jabil CUU /// Shipping Letter*"';

// http://flesler.blogspot.mx/2008/11/fast-trim-function-for-javascript.html
String.prototype.trimLeft = function() {
  var pivot = -1;
  while (this.charCodeAt(++pivot) < 33);
  return this.slice(pivot, this.length);
}

// http://flesler.blogspot.mx/2008/11/fast-trim-function-for-javascript.html
String.prototype.trimRight = function() {
  var pivot = this.length;
  while (this.charCodeAt(pivot--) < 33);
  return this.slice(0, pivot);
}

vendors = [];
function processSentItems() {
  var threads = GmailApp.search(VENDORS_GMAIL_QUERY);  
  var ss = SpreadsheetApp.openByUrl(VENDORS_SPREADSHEET_URL);

  var data = ss.getDataRange();
  var rows = data.getNumRows();
  var values = data.getValues();

  for (var i = 0; i < rows; ++i) {
    var row = values[i];

    var vendor = row[VENDOR_NAME_INDEX];
    var contacts = row[CONTACTS_INDEX];
    var replied_back = row[HAS_REPLIED_INDEX];
    var comments = row[COMMENTS_INDEX];

    vendors.push({
      name: vendor,
      contacts: contacts,
      replied_back: replied_back,
      comments: comments
    });

  }

  threads.forEach(function(thread) {
    var id = thread.getId();
    var subject = thread.getFirstMessageSubject();
    var vendorName = subject.split("-")[0];

    vendorName = vendorName.trimLeft();
    vendorName = vendorName.trimRight();

    var vendor = getVendorByName(vendorName);

    if (typeof vendor == "object") {
      if (vendor.replied_back.toLowerCase() != "yes") {
        thread.replyAll("Friendly reminder...")
      }
    }
  });

};

function getVendorByName(vendorName) {
  for (var i = 0; i < vendors.length; ++i) {
    if (vendors[i].name == vendorName) {
      return vendors[i];
    }
  }
};

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2022-01-17
    • 2011-04-14
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2014-06-18
    • 2013-05-29
    相关资源
    最近更新 更多