Sto riscontrando seri problemi nel decodificare il corpo del messaggio delle e-mail che utilizzo utilizzando l'API di Gmail. Voglio prendere il contenuto del messaggio e inserire il contenuto in un div. Sto usando un decodificatore base64, che so non decodificherà le e-mail codificate in modo diverso, ma non sono sicuro di come controllare una e-mail per decidere quale decodificatore usare - le e-mail che dicono che sono codificate utf-8 sono decodificate con successo dal decodificatore base64, ma non essere un decodificatore utf-8.Messaggi di decodifica dell'API Gmail in Javascript
Ho studiato la decodifica della posta elettronica per diversi giorni e ho imparato che sono un po 'fuori dal mio campionato qui. Non ho fatto molto lavoro con la codifica della posta elettronica prima. Ecco il codice che sto usando per ottenere i messaggi di posta elettronica:
gapi.client.load('gmail', 'v1', function() {
var request = gapi.client.gmail.users.messages.list({
labelIds: ['INBOX']
});
request.execute(function(resp) {
document.getElementById('email-announcement').innerHTML = '<i>Hello! I am reading your <b>inbox</b> emails.</i><br><br>------<br>';
var content = document.getElementById("message-list");
if (resp.messages == null) {
content.innerHTML = "<b>Your inbox is empty.</b>";
} else {
var encodings = 0;
content.innerHTML = "";
angular.forEach(resp.messages, function(message) {
var email = gapi.client.gmail.users.messages.get({
'id': message.id
});
email.execute(function(stuff) {
if (stuff.payload == null) {
console.log("Payload null: " + message.id);
}
var header = "";
var sender = "";
angular.forEach(stuff.payload.headers, function(item) {
if (item.name == "Subject") {
header = item.value;
}
if (item.name == "From") {
sender = item.value;
}
})
try {
var contents = "";
if (stuff.payload.parts == null) {
contents = base64.decode(stuff.payload.body.data);
} else {
contents = base64.decode(stuff.payload.parts[0].body.data);
}
content.innerHTML += '<b>Subject: ' + header + '</b><br>';
content.innerHTML += '<b>From: ' + sender + '</b><br>';
content.innerHTML += contents + "<br><br>";
} catch (err) {
console.log("Encoding error: " + encodings++);
}
})
})
}
});
});
stavo eseguendo alcuni controlli e il debug, quindi non c'è avanzi console.log
's e alcune altre cose che sono lì solo per il test. Tuttavia, puoi vedere qui quello che sto cercando di fare.
Qual è il modo migliore per decodificare le email che prelevo dall'API di Gmail? Dovrei provare a mettere le e-mail in <script>
con gli attributi charset
e type
corrispondenti al contenuto della codifica dell'email? Credo di ricordare che charset funziona solo con un attributo src
, che non avrei qui. Eventuali suggerimenti?
nel complesso molto buono e utile, grazie! nota che per quanto riguarda il punto n. 2 è menzionato nei documenti API users.messages.get: https://developers.google.com/gmail/api/v1/reference/users/messages/get (vedi il formato = documenti RAW) . Ma forse dovrebbe essere ulteriormente ampliato ... –
Ho controllato tante opzioni prima di trovare la soluzione di lavoro, grazie! – walla
Funziona anche con la libreria python base64. Grazie!! – maamaa