Я использую как модули 0pm, так и inbox
и mailparser
npm для чтения и анализа писем из почтового ящика.nodejs mailparser разобрал одно и то же сообщение несколько раз
У меня возникли проблемы с разборчивыми повторяющимися сообщениями. в настоящее время происходит следующее:
Письма удаляются в правильный почтовый ящик, как и следовало ожидать от почтового сервера. Затем их подбирают inbox
в моем приложении node.js. Затем они передаются по трубопроводу до mailparser
и анализируются.
Это работает правильно. Проблема в том, что когда я отправляю второе письмо, я просто получаю первый. Иногда я получаю несколько, но я не понял, какие причины.
let _inbox = require("inbox" );
let _MailParser = require("mailparser").MailParser;
let parser = new _MailParser();
let mail = _inbox.createConnection(false, "mail.myemailserver.com", {
auth: {
user: "[email protected]",
pass: "mypasswordthatissostrongnoonewilleverguessit:)"
}
});
mail.on("new", (message) => {
console.log(message.UID, message.title);
db_insert(DB.collection("email_ids"), { _id: message.UID }).then(() => {
mail.createMessageStream(message.UID).pipe(parser);
});
});
parser.on("end", (message) => {
// This works the first time, I get the correct message.
// The second time this gets called I just get the first message again.
});
Мои Spidey чувства говорят мне, что это что-то делать с тем фактом, я понятия не имею, как streams
и pipe
работы. Также стоит отметить, что это первый раз, когда я использовал одну из этих библиотек, и я, возможно, что-то пропустил.
Я использую MongoDB и он бросает шаткое, если вы попытаетесь вставить ту же _id
дважды, но это не жалуется на все. Это подтверждает мои подозрения относительно streams
и pipe
.
Я использую es6 с транспортером babel. не
Update
я больше не нужен ответ на этот вопрос. Я решил искать другую библиотеку. Теперь я использую mail-notifier
.
На всякий случай кто-то заинтересован. Вот как я решил проблему.
let _notifier = require("mail-notifier");
let imap = {
user : "[email protected]",
password: "mypasswordthatissostrongnoonewilleverguessit:)",
host : "mail.mymailserver.com"
};
_notifier(imap).on("mail", (mail) => {
// process email
}).start();
Мне все еще интересно узнать, что вызывает проблему с другим подходом, но это не важно.