import * as plugins from '../../plugins.js'; import * as paths from '../../paths.js'; import type { UnifiedEmailServer } from '../routing/classes.unified.email.server.js'; /** * Configures email server storage settings * @param emailServer Reference to the unified email server * @param options Configuration options containing storage paths */ export function configureEmailStorage(emailServer: UnifiedEmailServer, options: any): void { // Extract the receivedEmailsPath if available if (options?.emailPortConfig?.receivedEmailsPath) { const receivedEmailsPath = options.emailPortConfig.receivedEmailsPath; // Ensure the directory exists plugins.smartfile.fs.ensureDirSync(receivedEmailsPath); // Set path for received emails if (emailServer) { // Storage paths are now handled by the unified email server system plugins.smartfile.fs.ensureDirSync(paths.receivedEmailsDir); console.log(`Configured email server to store received emails to: ${receivedEmailsPath}`); } } } /** * Configure email server with port and storage settings * @param emailServer Reference to the unified email server * @param config Configuration settings for email server */ export function configureEmailServer( emailServer: UnifiedEmailServer, config: { ports?: number[]; hostname?: string; tls?: { certPath?: string; keyPath?: string; caPath?: string; }; storagePath?: string; } ): boolean { if (!emailServer) { console.error('Email server not available'); return false; } // Configure the email server with updated options const serverOptions = { ports: config.ports || [25, 587, 465], hostname: config.hostname || 'localhost', tls: config.tls }; // Update the email server options emailServer.updateOptions(serverOptions); console.log(`Configured email server on ports ${serverOptions.ports.join(', ')}`); // Set up storage path if provided if (config.storagePath) { configureEmailStorage(emailServer, { emailPortConfig: { receivedEmailsPath: config.storagePath } }); } return true; }