2015-07-15 16 views
6

Chciałbym otrzymać wiadomość zwrotną w wątku bez oryginalnej wiadomości. Jednak gdy używam albo Users.messages: GET, albo Users.threads: GET, otrzymuję odpowiedź (zgodnie z życzeniem) z oryginalną wiadomością (niepożądaną). Zobacz zrzut ekranu poniżej kodu.Jak uzyskać odpowiedź bez oryginalnej wiadomości z interfejsu Gmail API

(To pytanie, o ile mogę powiedzieć, zostało również postawione here, jednak nie znalazłem, że proponowane rozwiązanie odpowiada na pytanie, a plakat proponowanego rozwiązania zasugerował, że zaczynam nowe pytanie. .threads, jak sugeruje Tholle, otrzymał jednak taki sam wynik.)

Jestem noobem, więc wszelka pomoc jest bardzo doceniana i przepraszam, jeśli brakuje mi czegoś oczywistego.

Kod

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); 

Response

result

+2

AFAIK, nie możesz, ponieważ jest częścią treści wiadomości e-mail z odpowiedzią. Gmail wysyła Ci tylko tekst znajdujący się w e-mailu z odpowiedzią. Trzeba samemu przeanalizować ten tekst, aby usunąć to, czego nie chcesz. –

+0

W sekcji PHP nie było linii "preg_replace": https://developers.google.com/gmail/api/v1/reference/users/messages/get#response 'var decodedMessageContents = atob (encodedMessageContents.replace (/ -/g, '+'). replace (/ _/g, '/')); ' Dzięki za napisanie kodu! –

Odpowiedz

3

otrzymujesz pełną odpowiedź. Gdy raport odpowiedział, zacytowano oryginalną wiadomość, a tekst oryginału znajduje się w odpowiedzi. Możesz po prostu chcieć zrobić to, co robią Gmail i wiele innych współczesnych aplikacji e-mailowych oraz zwijać/ukrywać tekst odpowiedzi zaczynający się od>.

Powiązane problemy