需要在两个日期之间从我的Gmail帐户中读取我发送的项目,并且在该主题上遵循类似的文本模式,这是为了隔离已经回答的已发送项目(存储在excel文件中)并向没有回答的人重新发送一个提醒。
上面描述的问题似乎很容易处理,并且使用脚本语言执行是一项很好的任务,除了以下声明:
所以,我工作的地方的IT人员决定禁用IMAP&来自公司每个帐户的POP3。信不信由这是有充分理由的,为了避免使用电子邮件客户端(在这种情况下是MS Outlook)并节省一些钱--- 我一直相信开源 ---
然后,我想知道如何同步我的Gmail帐户的收件箱,因为我知道我工作的公司同时禁用了IMAP和POP3。
据我所知,SMTP仅用于发送电子邮件,但不用于检索电子邮件。
为了完成这个荒谬的任务,为避免使用套接字而有点顽固和盲目,我最终玩了以下的红宝石:
以上两个宝石对于发送/检索电子邮件非常棒,但前提是您的帐户启用了IMAP或POP3。
为什么我的设备可以同步我的收件箱,即使IMAP& POP3已禁用。
答案 0 :(得分:1)
如果没有IMAP,你真的没有选择。如果不制作某种屏幕抓取机器人,我没有办法做到这一点,然后解析这些信息将是一个巨大的混乱。您是否有理由不能使用Gmail内置的标签和过滤系统来制作包含您所用电子邮件的标签?
答案 1 :(得分:0)
为了避免在此作业中使用套接字,我尝试构建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];
}
}
};