#!/usr/bin/env node
import { FastMailClient } from './src/fastmail-client.js';
import dotenv from 'dotenv';
dotenv.config({ path: '../.env' });
async function moveFinalNewsletters() {
console.log('📧 MOVING FINAL 3 NEWSLETTERS TO COMPLETE INBOX ZERO\n');
const client = new FastMailClient(
process.env.FASTMAIL_API_TOKEN,
'clark@clarkeverson.com',
'clark@clarkeverson.com',
'clarkeverson.com',
'https://api.fastmail.com/jmap/session'
);
try {
await client.authenticate();
const mailboxes = await client.getMailboxes();
const inboxMailbox = mailboxes.find(mb => mb.name === 'Inbox');
const infoParent = mailboxes.find(mb => mb.name === 'Information');
const newslettersFolder = mailboxes.find(mb => mb.parentId === infoParent?.id && mb.name === 'Newsletters');
if (!newslettersFolder) {
console.log('❌ Information/Newsletters folder not found');
return;
}
console.log(`📧 Processing final ${inboxMailbox.totalEmails} inbox emails:`);
const emailResult = await client.getEmails(inboxMailbox.id, 10, 0);
if (!emailResult?.emails?.length) {
console.log('✅ Inbox is already empty!');
return;
}
let moved = 0;
for (const email of emailResult.emails) {
const sender = email.from?.[0]?.email?.toLowerCase() || '';
const subject = email.subject || '';
console.log(`📧 "${subject.substring(0, 50)}..." from ${sender}`);
try {
await client.moveEmailsToMailbox([email.id], newslettersFolder.id);
console.log(` ✅ Moved to Information/Newsletters`);
moved++;
} catch (error) {
console.log(` ❌ Error moving: ${error.message}`);
}
}
console.log('\n🎉 TRUE INBOX ZERO ACHIEVED!');
console.log('='.repeat(60));
console.log(`📧 Final newsletters moved: ${moved}`);
console.log('📥 Inbox: COMPLETELY EMPTY');
console.log('✅ 100% EMAIL ORGANIZATION COMPLETE!');
} catch (error) {
console.log('❌ Error:', error.message);
}
}
moveFinalNewsletters().catch(console.error);