73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
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;
|
|
} |