73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import * as plugins from '../../plugins.ts'; | ||
|  | import * as paths from '../../paths.ts'; | ||
|  | import type { UnifiedEmailServer } from '../routing/classes.unified.email.server.ts'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 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; | ||
|  | } |