使用Node.js的poplib和dateformat模块解决此问题。
首先,使用poplib模块连接到POP3服务器,并使用Node.js内置的crypto模块对密码进行加密,以确保安全性。接下来,使用POP3的命令获取所有电子邮件并根据特定条件过滤它们。最后,使用Dateformat模块为找到的电子邮件日期格式化。
以下是示例代码:
const POP3 = require('poplib');
const Crypto = require('crypto');
const DateFormat = require('dateformat');
const username = 'example@gmail.com';
const password = 'password';
const POP3Server = new POP3('pop.gmail.com', 995, {
enabletls: true,
});
POP3Server.on('error', (err) => {
console.log(err);
});
POP3Server.on('connect', () => {
console.log('Connected to POP3 server');
POP3Server.login(username, Crypto.createHash('md5').update(password).digest('hex'));
});
POP3Server.on('login', () => {
console.log('Logged in to POP3 server');
POP3Server.list((err, list) => {
if (err) throw err;
const emails = [];
const todayDate = new Date();
// Find all unseen emails from today
for (let i = 0; i < list.length; i++) {
POP3Server.retrieve(i + 1, (err, message) => {
if (err) throw err;
const messageId = message.headers['message-id'];
const messageDate = new Date(message.headers.date);
if (!message.headers['x-msmail-priority']) {
// Filter out spam
if (!message.headers.status.includes('S')) {
if (!message.headers.status.includes('R')) {
if (messageDate.toDateString() === todayDate.toDateString() && message.headers.status.includes('U')) {
emails.push({
messageId,
date: DateFormat(messageDate, 'yyyy-mm-dd HH:MM:ss'),
senderName: message.headers.from,
subject: message.headers.subject,
});
}
}
}
}
});
}
console.log(emails);
});
});
POP3Server.on('close', () => {
console.log('Disconnected from POP3 server');
});
POP3Server.connect();