Files
hermes-mcp/test-gmail-indeed.mjs
2026-04-29 09:52:53 -04:00

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();
}