【发布时间】:2015-11-10 04:44:24
【问题描述】:
我需要能够在任何电子邮件正文中收集多个附件。我的测试用例基于多部分/混合格式的电子邮件。我能够正确获取单个附件的文件名。当在回调中包含console.log('Filename' + part.filename) 时,可以很容易地看到问题。它永远是空的。看起来数组 - 部分总是“卡”在索引的最后一个,在我的情况下,这会给我一个空的 part.filename 和一个错误的 part.mimeType。
我尝试了各种解决方法,包括推送和弹出正确的文件名,但这不起作用,因为附件是按随机顺序返回的..
我相信这是一个错误,我希望这可以被识别为一个错误,因为我真的需要修复这个问题。
编辑:经过更多调查后的其他信息: 1. request.execute(function( attachment).. 只运行一次 - 在 for..loop 完成后,即使有多个 附件。但它会返回正确的附件 - 也 多个,按随机顺序排列。
request.execute(function( 附件)永远不会包含附件ID,只有原始数据 和大小。
附件对象request.execute(function( 附件)与 var parts = 报告的大小不同 message.payload.parts;这使得它无法用于关联。
request.execute(function(attachment) 只会使用最后的数据 来自 var parts = message.payload.parts;这与 附件。
function getAttachments(userId, message, callback) { var parts = message.payload.parts;
for (var i = 0; i < parts.length; i++) {
part = parts[i];
if (part.filename && part.filename.length > 0){
var attachId = part.body.attachmentId;
myfilename.push( part.filename )
var request = gapi.client.gmail.users.messages.attachments.get({
'id': attachId,
'messageId': message.id,
'userId': userId
});
request.execute(function( attachment) {
// PROBLEM: part.filename and part.mimeType is empty or wrong.
callback( **part.filename**, part.mimeType, attachment );
});
}
}
}
function callback( name, mime, att ) {
// PROBLEM: empty name, and wrong mime
console.log( 'Filnavn: ' + name );
if (name == '') {
name = myfilename.pop();
}
【问题讨论】:
标签: rest get gmail attachment gmail-api