我對着在適當從可視化的GMail電子郵件中提取一些麻煩的適當的可視化問題。我使用GMail API來檢索消息。這部分似乎工作正常,我得到了整個消息的JSON。 這裏是身體部位德爾福XE5:用提取的GMail電子郵件
"mimeType": "multipart/alternative",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "multipart/alternative; boundary=001a114710d029267205278f13b9"
}
],
"body": {
"size": 0
},
"parts": [
{
{
"partId": "0.0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=UTF-8"
},
{
"name": "Content-Transfer-Encoding",
"value": "quoted-printable"
}
],
"body": {
"size": 549,
"data": "SGkgUGF1bCwNCg0KQXBvbG9naWVzLCBidXQgSSBmb3Jnb3QgdG8gbWVudGlvbiB0aGF0IHRoZSByZXN0IG9mIHlvdXIgb3JkZXIgaGFzIGJlZW4NCnNlbnQgb3V0IGluIHRoZSBtZWFudGltZQ0KDQpNYW55IHRoYW5rcw0KDQoqS2luZCBSZWdhcmRzKg0KKkJhcmJhcmEgSm9uZXMqDQoqSW50ZXJuZXQgU2FsZXMqDQoNCipPbGQgTWlsbCBTYWRkbGVyeSoNCg0KKnd3dy5zYWRkbGVyeS5iaXogPGh0dHA6Ly93d3cuc2FkZGxlcnkuYml6Lz4qDQoNCipUZWw6ICs0NCAoMCkyOCA5MzM1IDMyNjggPCUyQjQ0JTIwJTI4MCUyOTI4JTIwOTMzNSUyMDMyNjg-Kg0KDQoqVGFrZSBhIFZpcnR1YWwgdG91ciBvZiBvdXIgc2hvcCoNCkdvb2dsZSBwbGFjZXMgaHR0cDovL2dvby5nbC85Y1o5ZDANCipbaW1hZ2U6IElubGluZSBpbWFnZXMgNF1XaXNoaW5nIHlvdSBhIHZlcnnigItbaW1hZ2U6IElubGluZSBpbWFnZXMgM10qDQoqICAgICAgICAgICAgICAgICAgTWVycnkgQ2hyaXN0bWFzKg0KDQoq4oCLICAg4oCLICDigIsgICAgW2ltYWdlOiBJbmxpbmUgaW1hZ2VzIDJd4oCLKg0K"
}
}
那麼,什麼是數據部分與編碼的一個小部分?我對「Content-Transfer-Encoding」 - >「quoted-printable」感到困惑。我應該使用「quoted-printable」解碼器解碼數據的值嗎? 起初沒有注意到「引用可打印」的價值,我解碼使用DecodeBase64的數據值,這裏是怎麼了使它
function TViewEmailsForm.DecodeData(aStr: String): String;
var
aStrm: TBytesStream;
aStrStrm: TStringStream;
begin
Result := '';
if aStr = '' then
Exit;
aStrm := TBytesStream.Create(DecodeBase64(aStr));
aStrStrm := TStringStream.Create;
try
aStrm.Position := 0;
aStrStrm.LoadFromStream(aStrm);
Result := aStrStrm.DataString;
finally
aStrm.Free;
aStrStrm.Free;
end;
end;
使用返回人類可讀的文本,但在年底更多的東西被解碼和我不明白這是什麼。我認爲這是某種形式的粗體文本,鏈接,簽名類型,但我無法正確顯示它(不知道要使用什麼作爲組件 - RichEdit,HTMLViewer) 已解碼字符串的結尾像
.......
*Name of the company*
*website of the company <again the website of the company>*
*Tel: +44 (0)28 9335 3268 <%2B44%20%280%2928%209335%203268
ѓBѓBЉ•ZЩHHљ\ќX[Э\€Щ€Э\€ЪЬ
ѓB‘ЫЫЩЫHXЩ\И‹ЛЩЫЫЛ™ЫОXЦЋYBЉ–Ъ[XYЩN€[›[™H[XYЩ\И
UЪ\Ъ[™И[ЭHH™\ћx "ЦЪ[XYЩN€[›[™H[XYЩ\ИЧJѓBЉ€Y\њћHЪљ\ЭX\КѓBѓBЉё "И8 "И8 "ИЪ[XYЩN€[›[™H[XYЩ\И—x "КѓB›
我有一些假裝有html正文,但同樣的數據是以這種方式看到的消息。我試圖加載這個字符串到TRichEdit的行,但沒有運氣,我試圖用TIdDecoderQuotedPrintable來解碼這個字符串,雖然我不知道我是否必須這樣做,但一些字符被替換爲'?'。 (問號) 我在這裏錯過了什麼以及消息內容可視化的正確方法是什麼?
如果它是一個標誌,它很可能是一個畫面,例如一個公司的標誌。 –
是的,那裏可能有類似的東西,但是如何確定它是什麼?我想這個問題的答案與這個問題有關http://stackoverflow.com/questions/5584204/changing-charset-when-retrieving-messages-from-mail-server,我甚至想到解析整個json並將其放入TIdMessage中,但接下來是如何將該郵件可視化? –
FWIW,我沒有XE7的幫助下找到'DecodeBase64'所以我用'DecodeBytes64',而是和它沒有返回與編碼的電話號碼作爲在您的文章結尾的字符串(即....%203268)。 –