【发布时间】:2015-10-05 00:53:54
【问题描述】:
我想在没有原始消息的线程中获得回复消息。但是,当我使用 Users.messages: GET 或 Users.threads: GET 时,我也会收到带有原始消息(不需要)的回复(根据需要)。请参阅下面的代码截图。
(据我所知,这个问题也是here 提出的,但是我没有发现建议的解决方案回答了这个问题,并且建议的解决方案的海报建议我开始一个新问题。我试过了但是,Tholle 建议的 Users.threads 收到了相同的结果。)
我是菜鸟,非常感谢任何和所有帮助,如果我遗漏了一些明显的东西,我深表歉意。
代码
var gapiGETRequest = function (gapiRequestURL)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", gapiRequestURL, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
var gapiRequestInboxMessagesAndToken = "https://www.googleapis.com/gmail/v1/users/me/messages?q=-label%3ASENT+in%3AINBOX&access_token=" + thisToken
var allMessagesReceived = gapiGETRequest(gapiRequestInboxMessagesAndToken)
var allMessagesObject = JSON.parse(allMessagesReceived)
var messageIdsOfReceivedMessages = [];
var getIdsOfReceivedMessages = function(responseObject){
for(var i=0; i < responseObject.messages.length; i ++) {
messageIdsOfReceivedMessages.push(responseObject.messages[i].id);
}
}
var messageContentsArr = [];
var getMessageContents = function(messageIdList)
{
for(var i=0; i < messageIdList.length; i++)
{
var gapiRequestMessageWithId = "https://www.googleapis.com/gmail/v1/users/me/messages/" + messageIdList[i] + "?access_token=" + thisToken
var currentMessage = JSON.parse(gapiGETRequest(gapiRequestMessageWithId))
var encodedMessageContents = currentMessage.payload.parts[0].body.data
var decodedMessageContents = atob(encodedMessageContents.replace(/-/g, '+').replace(/_/g, '/'));
messageContentsArr.push(decodedMessageContents)
}
}
getIdsOfReceivedMessages(allMessagesObject);
getMessageContents(messageIdsOfReceivedMessages);
回应
【问题讨论】:
-
AFAIK,你不能,因为它是回复电子邮件正文内容的一部分。 Gmail 只是向您发送回复电子邮件中的任何文本。您必须自己解析该文本以删除您不想要的内容。
-
这里的 PHP 部分缺少
preg_replace行:developers.google.com/gmail/api/v1/reference/users/messages/…var decodedMessageContents = atob(encodedMessageContents.replace(/-/g, '+').replace(/_/g, '/'));感谢您发布代码!