UNPKG

@voilajsx/appkit

Version:

Minimal and framework agnostic Node.js toolkit designed for AI agentic backend development

77 lines 2.58 kB
/** * 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