【发布时间】:2016-11-27 04:57:31
【问题描述】:
我正在尝试为 gmail 制作过滤器,我需要获取发送到的电子邮件。 问题是电子邮件收件人行中的电子邮件可以有许多不同的格式。我想看看是否有比我正在做的更简单的方法来统一电子邮件的格式。我只是想说明我能找到并处理的每一个案例。
function getTo(email) {
// Logs the To lines of up to the first 1-500 emails in your Inbox
var threads = GmailApp.getInboxThreads(0, 75);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var emailto = messages[j].getTo();
//runs the .to emails through the data conditioning function
//emailprocess(email,emailto)
}
Logger.log(emailto);
}
}
function main () {
var email = Session.getActiveUser().getEmail();
Logger.log(email);
getTo(email)
// createToFilte(toAddress, labelName)
}
function emailprocess(email,emailto){
var emailto = emailto.toLowerCase();
switch (emailto) {
case email:
label = 0;
break;
case "john doe <johndoe@gmail.com>":
label = 0;
break;
case "<johndoe@gmail.com>":
label = 0 ;
break;
default:
label = emailto.replace('johndoe+', '');
label = label.replace("@gmail.com","")
break;
}
}
电子邮件可以有多种不同的格式,这里有一些:
- john doe
- johndoe@gmail.com
- johndoe@gmail.com , janedoe@gmail.com
- johndoe+65@gmail.com
而且可能只有一点点。 任何帮助都会很棒。我也是最好的程序员,所以任何让这个更精简的方法都会很棒。
解决方案:
function getTo(email) {
var emailregex = /([a-zA-Z0-9_\.\+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-\.]+)/gm
var threads = GmailApp.getInboxThreads(0, 500); // Logs the To lines of up to the first 1-500 emails in your Inbox
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var emailto = messages[j].getTo()
var emailto = emailto.toLowerCase();
//Logger.log(emailto);
emailto = emailto.match(emailregex); //runs the .to emails through the data conditioning
Logger.log(emailto);
if(emailto != null){
for (var k = 0; k < emailto.length; k++) {
if (emailto[k].indexOf("+") > -1) {
var labelto = emailto[k].slice(emailto[k].indexOf("+") + 1, emailto[k].indexOf("@"));
createToFilter(emailto[k], labelto)
Logger.log(emailto[k]);
Logger.log(labelto);
}
}
}
}
}
}
【问题讨论】:
标签: javascript google-apps-script gmail gmail-api