2015-07-15 11 views
6

Vorrei ottenere il messaggio di risposta in una discussione senza il messaggio originale. Tuttavia, quando utilizzo User.messages: GET o Users.threads: GET, ricevo la risposta (come desiderato) anche con il messaggio originale (indesiderato). Vedi screenshot sotto il codice.Come ottenere il messaggio di risposta senza il messaggio originale dall'API di Gmail

(Questa domanda, per quanto posso dire, è stata posta anche here, tuttavia non ho trovato che la soluzione proposta risponda alla domanda e il poster della soluzione proposta mi ha suggerito di iniziare una nuova domanda. .threads come Tholle suggerisce comunque ricevuto lo stesso risultato.)

Sono un noob, quindi qualsiasi aiuto è molto apprezzato e mi scuso se mi manca qualcosa di ovvio.

Codice

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

risposta

result

+2

AFAIK, non è possibile, perché fa parte del contenuto del corpo dell'email di risposta. Gmail ti sta semplicemente inviando qualsiasi testo sia presente nell'e-mail di risposta. Dovresti analizzare personalmente quel testo per rimuovere ciò che non vuoi. –

+0

La riga 'preg_replace' mancava nella sezione PHP qui: https://developers.google.com/gmail/api/v1/reference/users/messages/get#response ' var decodedMessageContents = atob (encodedMessageContents.replace (/ -/g, '+'). replace (/ _/g, '/')); ' Grazie per aver postato il codice! –

risposta

3

si stanno ottenendo il messaggio completo di risposta. Quando il rapporto ha risposto, hanno citato il messaggio originale e questo il testo dell'originale è nel messaggio di risposta. Potresti semplicemente voler fare ciò che fanno Gmail e molte altre e-mail moderne app e comprimere/nascondere qualsiasi testo di risposta che inizia con>.

Problemi correlati