const Imap = require('imap'); const { simpleParser } = require('mailparser'); const fs = require('fs'); const imap = new Imap({ user: 'cococlawdy@gmail.com', password: 'wvfi htti cusm ypal', host: 'imap.gmail.com', port: 993, tls: true, tlsOptions: { rejectUnauthorized: false } }); function openInbox(cb) { imap.openBox('INBOX', true, cb); } imap.once('ready', function() { openInbox(function(err, box) { if (err) throw err; // Search for the EXTRA CREDIT email imap.search([['SINCE', new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)], ['SUBJECT', 'EXTRA CREDIT']], function(err, results) { if (err) throw err; if (!results || !results.length) { console.log('No EXTRA CREDIT messages found'); imap.end(); return; } console.log(`Found ${results.length} EXTRA CREDIT message(s)`); const f = imap.fetch(results, { bodies: '' }); f.on('message', function(msg, seqno) { msg.on('body', function(stream, info) { simpleParser(stream, async (err, parsed) => { if (err) { console.error('Parse error:', err); return; } console.log('\n=== EXTRA CREDIT - MERI ==='); console.log('From:', parsed.from.text); console.log('Subject:', parsed.subject); console.log('Date:', parsed.date); console.log('\n--- Full Text ---'); console.log(parsed.text); console.log('\n--- HTML (if available) ---'); console.log(parsed.html?.substring(0, 2000)); if (parsed.attachments && parsed.attachments.length > 0) { console.log('\n--- Attachments ---'); for (const att of parsed.attachments) { console.log(`\nFilename: ${att.filename}`); console.log(`Type: ${att.contentType}`); console.log(`Size: ${att.size} bytes`); // Save attachment const filepath = `/root/.openclaw/workspace/Projects/Casting/audition-meri-${att.filename}`; fs.writeFileSync(filepath, att.content); console.log(`Saved to: ${filepath}`); } } }); }); }); f.once('end', function() { console.log('\n\nDone fetching EXTRA CREDIT email'); setTimeout(() => imap.end(), 1000); }); }); }); }); imap.once('error', function(err) { console.error('IMAP Error:', err); }); imap.once('end', function() { console.log('Connection ended'); }); imap.connect();