denke ich, ist es sinnvoll, wenn Sie von der payload
als part
in sich selbst denken. Lassen Sie uns sagen, dass ich eine Nachricht mit nur einem Thema und einem einfachen Nachrichtentext senden:
From: [email protected]
To: [email protected]
Subject: Example Subject
This is the plain text message
Dies führt in der folgenden analysiert Nachricht:
{
"id": "154ecb53c10b74d8",
"threadId": "154ecb53c10b74d8",
"labelIds": [
"INBOX",
"SENT"
],
"snippet": "This is the plain text message",
"historyId": "38877",
"internalDate": "1464260181000",
"payload": {
"partId": "",
"mimeType": "text/plain",
"filename": "",
"headers": [
...
],
"body": {
"size": 31,
"data": "VGhpcyBpcyB0aGUgcGxhaW4gdGV4dCBtZXNzYWdlCg=="
}
},
"sizeEstimate": 355
}
Wenn ich eine Nachricht mit einem einfachen Textteil senden, ein hTML-Teil und ein Bild, wird es so aussehen, wenn analysiert:
{
"id": "154ed5ccaa12f3df",
"threadId": "154ed5ccaa12f3df",
"labelIds": [
"SENT",
"INBOX",
"IMPORTANT"
],
"snippet": "This is a plain/html message with an image.",
"historyId": "841379",
"internalDate": "1464271162000",
"payload": {
"mimeType": "multipart/mixed",
"filename": "",
"headers": [
...
],
"body": {
"size": 0
},
"parts": [
{
"mimeType": "multipart/alternative",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "multipart/alternative; boundary=089e0122896c7c80d80533bf3205"
}
],
"body": {
"size": 0
},
"parts": [
{
"partId": "0.0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=UTF-8"
}
],
"body": {
"size": 47,
"data": "VGhpcyBpcyBhIHBsYWluL2h0bWwgKm1lc3NhZ2UqIHdpdGggYW4gaW1hZ2UuDQo="
}
},
{
"partId": "0.1",
"mimeType": "text/html",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/html; charset=UTF-8"
}
],
"body": {
"size": 73,
"data": "PGRpdiBkaXI9Imx0ciI-VGhpcyBpcyBhIHBsYWluL2h0bWwgPGI-bWVzc2FnZTwvYj4gd2l0aCBhbiBpbWFnZS48L2Rpdj4NCg=="
}
}
]
},
{
"partId": "1",
"mimeType": "image/png",
"filename": "smile.png",
"headers": [
...
],
"body": {
"attachmentId": "ANGjdJ-OrSy7VAYL-UbRyNtmySbZLlV-fV43zJF0_neNGZ8yKugsZAxb32eSb-CrbYIhF9NvjGwBVEjSkRrUWoCS7aDpgoQnt9WR7f2sa17qVEyOg_JVSbrGrunirvQw2dY-SxxB3Y0JP3aYDHSBXpNO6fFCByVFWQDw1et5Mh9di7bGO4AWOLKFVe_Yb2RmdDwuazGXGb8zA88TTMaiEPIacPTNiVtBrIWG0EKGxHBhep9j8ujyWeCS5P9X80dBHvBNj4T9XjUwcrN6FvwegRewRMM9cBupY7jQESR7915OcbhCNyi5l64x6vVh1ZU",
"size": 2002
}
}
]
},
"sizeEstimate": 3077
}
Sie werden sehen, es ist nur die RFC822-Nachricht analysiert, um JSON
. Wenn Sie nur die
parts
überqueren und die
payload
als
part
selbst behandeln, finden Sie, was Sie suchen.
var parts = [response.payload];
while (parts.length) {
var part = parts.shift();
if (part.parts) {
parts = parts.concat(part.parts);
}
if(part.mimeType === 'text/html') {
var decodedPart = decodeURIComponent(escape(atob(part.body.data.replace(/\-/g, '+').replace(/\_/g, '/'))));
console.log(decodedPart);
}
}
Hallo Tony - Vielen Dank für Ihre Antwort. Würden Sie sagen, dass 'text/html' und 'text/plain' die einzigen MimeTypes sind, die direkt Text enthalten? – jgozal
Ja, aber nur der erste. Eine Nachricht könnte einen Text/einfachen Teil und 10 Anhänge Textdateien vom Typ text/plain enthalten. Oder ich könnte eine Nachricht mit multipart/mixed haben, wie oben, aber text/plain attachment statt application/zip. Meine Strategie (wenn ich HTML bevorzuge) ist, nach der ersten multipart/Alternative zu suchen, nach einem HTML-Teil darin zu suchen, wenn nicht gefunden nach einem Textteil darin suchen. Wenn es keine mehrteilige Alternative gibt, suche ich nach dem ersten von entweder einem Text/einfachen Teil oder einem Text/HTML-Teil. Ich benutze zuerst, weil, wenn Sie eine mehrteilige Mischung mit Text und HTML-Anhang haben, wollen Sie Text –
Ja, es ist, was ich auch bemerkt habe. Danke nochmal für deine Hilfe! – jgozal