← back to Claude Mail

imap-check.js

27 lines

'use strict';
// READ-ONLY IMAP connectivity check. Connects, counts UNSEEN, prints recent
// senders/subjects. Never runs claude, never sends, never modifies flags.
const { ImapFlow } = require('imapflow');
const { cfg } = require('./lib');

(async () => {
  const client = new ImapFlow({
    host: cfg.imapHost, port: cfg.imapPort, secure: true,
    auth: { user: cfg.user, pass: cfg.pass }, logger: false,
  });
  await client.connect();
  const lock = await client.getMailboxLock('INBOX');
  try {
    const status = await client.status('INBOX', { messages: true, unseen: true });
    console.log(`IMAP OK as ${cfg.user} — total=${status.messages} unseen=${status.unseen}`);
    const recent = [];
    for await (const msg of client.fetch({ seen: false }, { envelope: true })) {
      recent.push(`  unseen: from=${msg.envelope?.from?.[0]?.address} subj="${msg.envelope?.subject || ''}"`);
    }
    if (recent.length) console.log(recent.join('\n')); else console.log('  (no unseen messages)');
  } finally {
    lock.release();
    await client.logout().catch(() => {});
  }
})().catch((e) => { console.error('IMAP CHECK FAILED:', e.message); process.exit(1); });