Я пытаюсь получить всю ветку электронной почты из входящих сообщений, используя идентификатор сообщения. Для этого я использую npm пакет «imap-simple». Я пытался использовать критерии поиска var searchCriteria = [['HEADER','IN-REPLY-TO',messageId]];
, но я получаю ответы только для основной темы. Я хочу получить целые ответы (ответы ответов) из папки «Входящие». Я пробовал var searchCriteria = [['OR', ['HEADER', 'IN-REPLY-TO', messageId], ['HEADER', 'REFERENCES', messageId]]];
, но ни один из них не помогает. Пожалуйста, помогите мне с необходимостью. Я включил весь метод ниже для вашей справки. Заранее спасибо
const getInbox = (imapConfig, messageId) => {
return new Promise((resolve, reject) => {
let config = {
imap: {
user: imapConfig.smtp_settings.auth.username,
password: aesHelper.decrypt(imapConfig.smtp_settings.auth.password),
host: imapConfig.smtp_settings.imap_host,
port: imapConfig.smtp_settings.imap_port,
tls: true,
tlsOptions:{rejectUnauthorized:false},
authTimeout: 3000
}
}
Imap.connect(config).then(function (connection) {
return connection.openBox('INBOX').then(function () {
var searchCriteria = [['OR', ['HEADER', 'IN-REPLY-TO', messageId], ['HEADER', 'REFERENCES', messageId]]];
var fetchOptions = {
bodies: ['HEADER', 'TEXT', ''],
};
return connection.search(searchCriteria, fetchOptions).then(async function (messages) {
let promises = messages.map(item => {
return new Promise((resolve, reject) => {
var all = _.find(item.parts, { "which": "" })
var id = item.attributes.uid;
var idHeader = "Imap-Id: " + id + "\r\n";
simpleParser(idHeader + all.body, (err, mail) => {
resolve(mail);
});
});
});
Promise.all(promises).then(data => {
connection.end();
let d = data.map(obj => {
return {
from: obj.from.value.map(obj => obj.address).join(','),
to: obj.to.value.map(obj => obj.address).join(','),
subject: obj.subject,
// body:obj.textAsHtml,
body: obj.html,
attachments: obj.attachments,
message_id: obj.messageId,
in_reply_to: obj.inReplyTo,
date: obj.date
};
});
resolve(d);
})
});
});
}).catch(err => {
reject(err);
});
});
}