import { NextResponse } from 'next/server'; import Imap from 'imap'; export async function POST(request: Request) { try { const { email, password, host, port } = await request.json(); // Ensure port is a valid number const portNumber = parseInt(port, 10); if (isNaN(portNumber) || portNumber < 0 || portNumber > 65535) { throw new Error('Invalid port number'); } const imapConfig = { user: email, password: password, host: host, port: portNumber, tls: true, authTimeout: 10000, connTimeout: 10000, debug: console.log }; console.log('Attempting IMAP connection with config:', { ...imapConfig, password: '[REDACTED]' }); const imap = new Imap(imapConfig); return new Promise((resolve, reject) => { imap.once('ready', () => { console.log('IMAP connection successful'); imap.end(); resolve(NextResponse.json({ success: true })); }); imap.once('error', (err: Error) => { console.error('IMAP connection error:', err); reject(NextResponse.json({ error: 'IMAP connection failed', details: err.message }, { status: 500 })); }); imap.connect(); }); } catch (error) { console.error('Error in test-connection:', error); return NextResponse.json({ error: 'Failed to test connection', details: error instanceof Error ? error.message : 'Unknown error' }, { status: 500 }); } }