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;
 | |
| } |