57 lines
2.1 KiB
JavaScript
57 lines
2.1 KiB
JavaScript
import { ImapFlow } from 'imapflow';
|
|
|
|
const client = new ImapFlow({
|
|
host: 'imap.gmail.com',
|
|
port: 993,
|
|
secure: true,
|
|
auth: {
|
|
user: process.env.GMAIL_EMAIL,
|
|
pass: process.env.GMAIL_APP_PASSWORD,
|
|
},
|
|
logger: false,
|
|
});
|
|
|
|
await client.connect();
|
|
|
|
try {
|
|
// Test 1: Search INBOX for indeed
|
|
console.log('=== Searching INBOX for "indeed" ===');
|
|
await client.mailboxOpen('INBOX');
|
|
let uids = await client.search({ gmailraw: 'indeed' }, { uid: true });
|
|
console.log('INBOX results:', Array.isArray(uids) ? uids.length : 0, 'messages');
|
|
if (Array.isArray(uids) && uids.length > 0) {
|
|
const recent = uids.slice(-5);
|
|
for await (const msg of client.fetch(recent, { envelope: true }, { uid: true })) {
|
|
const env = msg.envelope;
|
|
console.log(` [${msg.uid}] ${env?.subject} | from: ${env?.from?.[0]?.address}`);
|
|
}
|
|
}
|
|
|
|
// Test 2: Search All Mail for indeed
|
|
console.log('\n=== Searching [Gmail]/All Mail for "indeed" ===');
|
|
await client.mailboxOpen('[Gmail]/All Mail');
|
|
uids = await client.search({ gmailraw: 'indeed' }, { uid: true });
|
|
console.log('All Mail results:', Array.isArray(uids) ? uids.length : 0, 'messages');
|
|
if (Array.isArray(uids) && uids.length > 0) {
|
|
const recent = uids.slice(-10);
|
|
for await (const msg of client.fetch(recent, { envelope: true }, { uid: true })) {
|
|
const env = msg.envelope;
|
|
console.log(` [${msg.uid}] ${env?.subject} | from: ${env?.from?.[0]?.address}`);
|
|
}
|
|
}
|
|
|
|
// Test 3: Search All Mail for from:indeed
|
|
console.log('\n=== Searching [Gmail]/All Mail for "from:donotreply@jobalert.indeed.com" ===');
|
|
uids = await client.search({ gmailraw: 'from:donotreply@jobalert.indeed.com' }, { uid: true });
|
|
console.log('All Mail from:indeed results:', Array.isArray(uids) ? uids.length : 0, 'messages');
|
|
if (Array.isArray(uids) && uids.length > 0) {
|
|
const recent = uids.slice(-5);
|
|
for await (const msg of client.fetch(recent, { envelope: true }, { uid: true })) {
|
|
const env = msg.envelope;
|
|
console.log(` [${msg.uid}] ${env?.subject} | from: ${env?.from?.[0]?.address}`);
|
|
}
|
|
}
|
|
} finally {
|
|
await client.logout();
|
|
}
|