@voilajsx/appkit
Version:
Minimal and framework agnostic Node.js toolkit designed for AI agentic backend development
77 lines • 2.58 kB
TypeScript
/**
* SMTP email strategy with nodemailer and connection pooling
* @module @voilajsx/appkit/email
* @file src/email/strategies/smtp.ts
*
* @llm-rule WHEN: App has SMTP_HOST environment variable for universal email sending
* @llm-rule AVOID: Manual SMTP setup - this handles connection pooling, authentication, and reliability
* @llm-rule NOTE: Universal email strategy that works with any SMTP server (Gmail, Outlook, etc.)
*/
import type { EmailStrategy, EmailData, EmailResult } from '../email.js';
import type { EmailConfig } from '../defaults.js';
/**
* SMTP email strategy with connection pooling and reliability features
*/
export declare class SmtpStrategy implements EmailStrategy {
private config;
private transporter;
private connected;
/**
* Creates SMTP strategy with direct environment access (like auth pattern)
* @llm-rule WHEN: Email initialization with SMTP_HOST detected
* @llm-rule AVOID: Manual SMTP configuration - environment detection handles this
*/
constructor(config: EmailConfig);
/**
* Sends email via SMTP with automatic connection management
* @llm-rule WHEN: Sending emails through SMTP servers
* @llm-rule AVOID: Manual SMTP calls - this handles all connection complexity
* @llm-rule NOTE: Includes connection pooling, authentication, and error handling
*/
send(data: EmailData): Promise<EmailResult>;
/**
* Disconnects SMTP strategy gracefully
* @llm-rule WHEN: App shutdown or email cleanup
* @llm-rule AVOID: Abrupt disconnection - graceful shutdown prevents connection issues
*/
disconnect(): Promise<void>;
/**
* Ensures SMTP transporter is connected
*/
private ensureConnected;
/**
* Converts EmailData to nodemailer format
*/
private convertToSmtpFormat;
/**
* Formats single email address for nodemailer
*/
private formatEmailAddress;
/**
* Formats multiple email addresses for nodemailer
*/
private formatEmailAddresses;
/**
* Formats attachments for nodemailer
*/
private formatAttachments;
/**
* Guesses content type from filename
*/
private guessContentType;
/**
* Parses SMTP errors into user-friendly messages
*/
private parseSmtpError;
/**
* Gets SMTP connection info for debugging
*/
getConnectionInfo(): {
host: string;
port: number;
secure: boolean;
authenticated: boolean;
connected: boolean;
};
}
//# sourceMappingURL=smtp.d.ts.map