import * as plugins from '../../plugins.js'; import { Email } from '../core/classes.email.js'; import type { UnifiedEmailServer } from '../routing/classes.unified.email.server.js'; export interface IEmailSendOptions { maxRetries?: number; retryDelay?: number; connectionTimeout?: number; tlsOptions?: plugins.tls.ConnectionOptions; debugMode?: boolean; } export declare enum DeliveryStatus { PENDING = "pending", SENDING = "sending", DELIVERED = "delivered", FAILED = "failed", DEFERRED = "deferred" } export interface DeliveryInfo { status: DeliveryStatus; attempts: number; error?: Error; lastAttempt?: Date; nextAttempt?: Date; mxServer?: string; deliveryTime?: Date; logs: string[]; } export declare class EmailSendJob { emailServerRef: UnifiedEmailServer; private email; private mxServers; private currentMxIndex; private options; deliveryInfo: DeliveryInfo; constructor(emailServerRef: UnifiedEmailServer, emailArg: Email, options?: IEmailSendOptions); /** * Send the email to its recipients */ send(): Promise; /** * Validate the email before sending */ private validateEmail; /** * Resolve MX records for the recipient domain */ private resolveMxRecords; /** * Attempt to deliver the email with retries */ private attemptDelivery; /** * Connect to a specific MX server and send the email using SmtpClient */ private connectAndSend; /** * Record delivery event for monitoring */ private recordDeliveryEvent; /** * Check if an error represents a permanent failure */ private isPermanentFailure; /** * Resolve MX records for a domain */ private resolveMx; /** * Log a message with timestamp */ private log; /** * Save successful email to storage */ private saveSuccess; /** * Save failed email to storage */ private saveFailed; /** * Delay for specified milliseconds */ private delay; }