已经在这里呆了两天了...... 我让它们工作,一切都很好,但我需要不断收到新电子邮件,而不仅仅是一次或当我调用该函数时。
这是我的代码
const main = async () => {
// Wait until client connects and authorizes
await client.connect();
// Select and lock a mailbox. Throws if mailbox does not exist
let lock = await client.getMailboxLock("INBOX");
// let mailbox = await client.mailboxOpen("INBOX");
try {
for await (let message of client.fetch(
{ seen: false },
{
envelope: true,
internalDate: true,
bodyStructure: true,
flags: true,
source: true,
}
)) {
let parsed = await simpleParser(message.source);
// const iconv = new Iconv("utf-8");
app.get("/test", async (req, res) => {
res.render("test.ejs", {
parsed: parsed.text,
});
});
console.log(message.bodyStructure.parameters);
console.log("Message UID: " + message.uid);
console.log("Date: " + parsed.date);
console.log("From Email: " + parsed.from.value[0].address);
console.log("Subject: " + parsed.subject);
// console.log(strin.toString().split("").reverse().join(""));
console.log("To: " + parsed.to.value[0].address);
console.log("Message as Text: " + parsed.text);
console.log("Message as HTML: " + parsed.html);
}
// Adds \\Seen flag to unseen messages
await client.messageFlagsAdd({ seen: false }, ["\\Seen"]);
} finally {
// Make sure lock is released, otherwise next `getMailboxLock()` never returns
lock.release();
}
await client.logout();
};
main().catch((err) => console.error(err));
可能有什么解决方案,我查看了 cron 但它不是一个好的解决方案。 首次运行后 imapflow 不断出现错误
错误 [ERR_STREAM_WRITE_AFTER_END]:结束后写入
现在该模块的所有者说您需要使用另一个连接,这是他就他提出的问题向某人提供的答案。 但不知道如何解决这个问题,而且 imapflow 没有大量的受众来寻找答案。
如有任何帮助,我们将不胜感激。
不要在 main 中调用 client.connect,这可能会导致此问题。 尝试这样的事情:
client.connect().then(async () => {
// better add rest of the code in a method and call that here
await fetchNewMails();
});
并且有一个事件侦听器将不断检查新邮件
client.on('exists',async () => {
await fetchNewMails();
});
希望这有帮助。