我正在努力寻找如何获取Google Mail的AttachmentId列表。
当我从Gmail Api收到邮件时,得到以下Json响应:
{
"id": string,
"threadId": string,
"labelIds": [
string
],
"snippet": string,
"historyId": unsigned long,
"internalDate": long,
"payload": {
"partId": string,
"mimeType": string,
"filename": string,
"headers": [
{
"name": string,
"value": string
}
],
"body": users.messages.attachments Resource,
"parts": [
(MessagePart)
]
},
"sizeEstimate": integer,
"raw": bytes
}
由于没有Api调用来列出邮件的所有附件,因此我认为有关附件的信息必须在此响应中的某处,但找不到。感谢您的帮助
答案 0 :(得分:0)
我确实找到了在哪里查找信息: Google会将附件和完整的邮件正文之类的信息拆分为一些部分,您可以在邮件的有效负载中找到这些部分。 我写了一个函数,将所有部分递归地添加到一个列表中,然后过滤出附件和消息正文:
//parts are recursively nested. To find the attachments, it seems necessary to
// iterate over all parts.
List _parts = new List();
void _getAllParts(_iterable) {
_iterable.forEach((_part) {
_parts.add(_part);
if (_part['parts'] != null) {
_getAllParts(_part['parts']);
}
});
}
_getAllParts(_mailObject['payload']['parts']);
_parts.forEach((_part) {
if (_part['filename'] != "") _attachments.add(_part);
if (_part['mimeType'] == "text/plain") _textPlain = utf8.decode(base64.decode(_part['body']['data']));
if (_part['mimeType'] == "text/html") _textHtml = utf8.decode(base64.decode(_part['body']['data']));
});
我希望它可以节省任何人的时间。