您好,
我正在使用Imap nodejs模块来获取电子邮件的内容,但有时候对于某些邮件,我收到了错误的正文内容。例如对于一封邮件,我的身体内容如下
SGkgTmFkZWVtDQoNCiANCg0KT3VyIENFTyBpcyBjdXJyZW50bHkgdHJhdmVsbGluZyBhbmQgd291 bGQgbm90IGJlIGF2YWlsYWJsZSB0aGlzIHdlZWsuIFdlIGFyZSBwZW5kaW5nIGFwcHJvdmFsIG9m IHRoZSBjb250cmFjdCwgd291bGQgdXBkYXRlIEFTQVAuDQoNCiANCg0KLS0NCg0KVGhhbmtzICYg UmVnYXJkcywNCg0KIA0KDQpNYXlhbmsgSi4gR3VsYXRpDQoNCk1hbmFnZXIgfCBQcm9kdWN0cyB8 IEVudGVycHJpc2UgQnVzaW5lc3MgfCBBQ0wgTW9iaWxlIExpbWl0ZWQNCg0KTW9iaWxlLyBCb2Fy ZCBOdW1iZXI6ICs5MS4gODgwMC05OTg5LTIwDQoNCiANCg0KRnJvbTogTWF5YW5rIEp5b3RpIEd1 bGF0aSANClNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyMCwgMjAxNCAxMjo1OSBQTQ0KVG86ICdO YWRlZW0gSXFiYWwnDQpDYzogJ1Nob2JoaXQgRWxoYW5jZSc7IFJpc2hpIFRhbmRvbg0KU3ViamVj dDogUkU6IEFwcGxhbmUgLSBGb2xsb3cgVXANCg0KIA0KDQpIaQ0KDQogDQoNCkFzIGRpc2N1c3Nl ZCwgdGhlIGNvbnRyYWN0IGlzIHVuZGVyIENFT+KAmXMgYXBwcm92YWwuIFdvdWxkIHVwZGF0ZSBB U0FQLg0KDQogDQoNCi0tDQoNClRoYW5rcyAmIFJlZ2FyZHMsDQoNCiANCg0KTWF5YW5rIEouIEd1 bGF0aQ0KDQpNYW5hZ2VyIHwgUHJvZHVjdHMgfCBFbnRlcnByaXNlIEJ1c2luZXNzIHwgQUNMIE1v YmlsZSBMaW1pdGVkDQoNCk1vYmlsZS8gQm9hcmQgTnVtYmVyOiArOTEuIDg4MDAtOTk4OS0yMA0K DQogDQoNCkZyb206IE5hZGVlbSBJcWJhbCBbbWFpbHRvOm5hZGVlbS5pcWJhbEBhcHBsYW5lLmNv bV0gDQpTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDE5LCAyMDE0IDU6MTYgUE0NClRvOiBSaXNo aSBUYW5kb247IE1heWFuayBKeW90aSBHdWxhdGkNCkNjOiAnU2hvYmhpdCBFbGhhbmNlJw0KU3Vi
现在我已将此电子邮件发送给我,然后我使用我的emailid读取了正文内容,然后我有正确的正文内容,如:
更多细节= C2 = BB为Applane预订 团队何时 2014年12月2日星期二下午1点= E2 = 80 = 93 3点印度标准时间 视频通话 https://plus.google.com/hangouts/_/daffodilsw.com/nadeem 日历 Nadeem Iqbal 谁 = E2 = 80 = A2 Mandeep Singh - 创造者= E2 = 80 = A2 Nadeem Iqbal Going?
我获取电子邮件内容的代码如下:
imap.once('ready', function () {
imap.openBox("[Gmail]/All Mail", true, function (err, box) {
if (err) {
d.reject(err);
}
var Moment = require("moment");
var sDate = Moment(startDate).format("MMMM DD, YYYY");
var mailSearchOptions = [];
if (params.mailSearchOptions) {
mailSearchOptions = params.mailSearchOptions
} else {
mailSearchOptions.push(['SINCE', sDate]);
if (uid) {
mailSearchOptions.push(["uid", uid + ":*"])
}
}
try {
imap.search(mailSearchOptions, function (err, results) {
if (err) {
d.reject(err);
return
}
if (!results || (Array.isArray(results) && results.length == 0)) {
d.reject(err);
return;
}
var f = imap.fetch(results, { bodies: ['HEADER.FIELDS (TO FROM SUBJECT CC)', '1', '1.1'], struct: true });
f.on('message', function (msg, seqno) {
console.log('Message #%d', seqno);
var mailDate = false;
var head = "";
var text = "";
var attechmentText = "";
msg.on("body", function (stream, info) {
stream.on('data', function (chunk) {
if (info.which == 'HEADER.FIELDS (TO FROM SUBJECT CC)') {
head += chunk.toString('utf8');
}
else if (info.which == "1") {
text += chunk.toString('utf8');
} else {
attechmentText += chunk.toString('utf8');
}
});
stream.once('end', function () {
if (info.which == 'HEADER.FIELDS (TO FROM SUBJECT CC)') {
head = require("imap").parseHeader(head);
}
});
});
msg.once('attributes', function (attrs) {
lastUid = attrs.uid;
mailDate = attrs.date;
});
msg.once('end', function () {
if (!uid || (uid && lastUid !== parseInt(uid))) {
var mailbody = "";
if (attechmentText != "null") {
mailbody = attechmentText;
} else {
mailbody = text;
}
formatEmails(head);
head.subject = head.subject ? head.subject[0] : "";
var participants = [];
populateParticipants(head, username, participants);
mails.push({head: head, body: mailbody, date: mailDate, participants: participants, user: {_id: userid, username: username}, uid: lastUid});
}
});
});
f.once('error', function (err) {
d.reject(err);
});
f.once('end', function () {
console.log('Done fetching all messages!!!!');
if (!params.maintainLogs) {
return updateLastUid(lastUid, uid, userid, db).then(function () {
imap.end();
});
} else {
imap.end();
}
});
});
} catch (e) {
d.reject(e);
}
});
});
imap.once('error', function (err) {
console.log("Error>>>>" + err);
d.reject(err);
});
imap.once('end', function () {
console.log('Connection ended');
d.resolve(mails);
});
imap.connect();
有人可以告诉我我做错了什么吗?
感谢您的帮助