#!/usr/bin/env ts-node /** * Basic usage example for SMTP over WebSocket client */ import { SMTPOverWSClient, MessagePriority } from '../src/index'; async function basicUsageExample() { console.log('Starting SMTP WebSocket Client Basic Example\n'); // Create client with basic configuration const client = new SMTPOverWSClient({ url: 'ws://localhost:3000/smtp', // Replace with your server URL apiKey: 'your-api-key-here', // Replace with your API key debug: true, reconnectInterval: 5000, maxReconnectAttempts: 3 }); // Set up event listeners client.on('connected', () => { console.log('Connected to WebSocket server'); }); client.on('authenticated', () => { console.log('Authentication successful'); }); client.on('disconnected', (reason) => { console.log(`Disconnected: ${reason || 'Unknown reason'}`); }); client.on('error', (error) => { console.error('Client error:', error.message); }); client.on('messageQueued', (messageId, queueSize) => { console.log(`Message ${messageId} queued (Queue size: ${queueSize})`); }); client.on('messageProcessed', (messageId, responseTime) => { console.log(`Message ${messageId} processed in ${responseTime}ms`); }); try { console.log('Sending SMTP commands...\n'); // Send basic SMTP sequence const ehloResponse = await client.sendSMTPCommand('EHLO example.com\r\n'); console.log('EHLO Response:', ehloResponse.trim()); const mailFromResponse = await client.sendSMTPCommand('MAIL FROM: \r\n'); console.log('MAIL FROM Response:', mailFromResponse.trim()); const rcptToResponse = await client.sendSMTPCommand('RCPT TO: \r\n'); console.log('RCPT TO Response:', rcptToResponse.trim()); const dataResponse = await client.sendSMTPCommand('DATA\r\n'); console.log('DATA Response:', dataResponse.trim()); // Send email content const emailContent = `From: sender@example.com\r\nTo: recipient@example.com\r\nSubject: Test Email\r\n\r\nThis is a test email.\r\n.\r\n`; const contentResponse = await client.sendSMTPCommand(emailContent); console.log('Content Response:', contentResponse.trim()); const quitResponse = await client.sendSMTPCommand('QUIT\r\n'); console.log('QUIT Response:', quitResponse.trim()); console.log('\nAll SMTP commands sent successfully!'); // Display statistics const stats = client.getStats(); console.log('\nClient Statistics:'); console.log(` Messages Queued: ${stats.messagesQueued}`); console.log(` Messages Processed: ${stats.messagesProcessed}`); console.log(` Messages Failed: ${stats.messagesFailed}`); console.log(` Average Response Time: ${stats.averageResponseTime.toFixed(2)}ms`); console.log(` Connection Uptime: ${stats.connectionUptime}ms`); } catch (error) { console.error('Error during SMTP communication:', error); } finally { console.log('\nShutting down client...'); await client.shutdown(); console.log('Client shutdown complete'); } } // Run the example if (require.main === module) { basicUsageExample() .then(() => { console.log('\nBasic usage example completed successfully'); process.exit(0); }) .catch((error) => { console.error('\nExample failed:', error); process.exit(1); }); } export { basicUsageExample };