gpt4 book ai didi

node.js - nodejs mailparser多次解析同一条消息

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:52 26 4
gpt4 key购买 nike

我正在使用 inboxmailparser npm 模块来读取和解析邮箱中的电子邮件。

我在解析重复消息时遇到了一些问题。目前正在发生的事情是:

电子邮件正按照您对电子邮件服务器的期望被放入正确的邮箱。然后它们被我的 node.js 应用程序中的 inbox 接收。然后它们被传送到 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@myemailserver.com",
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.
});

我敏锐的直觉告诉我,这与我不知道 streamspipe 的工作原理有关。还值得注意的是,这是我第一次使用这些库中的任何一个,我可能错过了一些东西。

mailparser
inbox

我正在使用 MongoDB,如果您尝试插入相同的 _id 两次,它会抛出一个不稳定的问题,但这根本不是提示。这加强了我对 streamspipe 的怀疑。

我将 es6 与 babel 转译器一起使用。

更新

我不再需要这个问题的答案。我决定寻找一个不同的图书馆。我现在正在使用 mail-notifier

以防万一有人感兴趣。这就是我解决问题的方法。

let _notifier = require( "mail-notifier" );

let imap = {
user : "email@myemailserver.com",
password: "mypasswordthatissostrongnoonewilleverguessit:)",
host : "mail.mymailserver.com"
};

_notifier( imap ).on( "mail", ( mail ) => {
// process email
}).start();

我仍然有兴趣知道是什么导致了另一种方法的问题,但这并不重要。

最佳答案

我遇到了同样的问题。原因是每次运行一个循环时都必须创建新的 MailParser 实例。

let _MailParser = require( "mailparser" ).MailParser;

mail.on( "new", ( message ) => {

parser = new _MailParser();

// do your stuff

parser.on( "end", ( message ) => {

// finished

});
}

关于node.js - nodejs mailparser多次解析同一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32009878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com