UNPKG

@454creative/easy-email

Version:

A framework-agnostic email service library for Node.js with observability and monitoring

131 lines 4.43 kB
import { EmailOptions, EmailResponse, SmtpConfig, EmailProviderConfig } from '../interfaces/email-options.interface'; import { EmailRequest } from '../interfaces/email-request.interface'; import { IEmailService } from '../interfaces/email-service.interface'; import { ObservabilityConfig } from '../interfaces/observability.interface'; /** * EmailService - A reusable service for sending emails * * This service can be used in both NodeJS/JavaScript and NestJS/TypeScript projects. */ export declare class EmailService implements IEmailService { private transporter?; private defaultFrom?; private providerType; private sendGridConfigured; private sesService?; private observability; /** * Create an instance of EmailService * * @param providerConfig - Email provider configuration (SMTP, SendGrid, or SES) * @param defaultFrom - Default sender email and name * @param observabilityConfig - Optional observability configuration */ constructor(providerConfig: EmailProviderConfig | SmtpConfig, // Support legacy constructor defaultFrom?: { email: string; name?: string; }, observabilityConfig?: ObservabilityConfig); /** * Configure email provider based on configuration * @private */ private configureProvider; /** * Verify email provider connection * * @returns Promise<boolean> - True if connection is successful */ verifyConnection(): Promise<boolean>; /** * Validate email options * @private */ private validateEmailOptions; /** * Centralized error handler for email operations * @private */ private handleError; /** * Send email using the new EmailRequest interface * * @param request - Email request * @returns Promise<EmailResponse> - Response with success status and message ID */ sendEmail(request: EmailRequest): Promise<EmailResponse>; /** * Send email using legacy EmailOptions interface (for backward compatibility) * * @param options - Email options * @returns Promise<EmailResponse> - Response with success status and message ID */ sendEmailLegacy(options: EmailOptions): Promise<EmailResponse>; /** * Create standardized email response * @private */ private createSuccessResponse; /** * Create standardized error response * @private */ private createErrorResponse; /** * Send an email using SMTP * * @param options - Email options * @returns Promise<EmailResponse> - Response with success status and message ID * @private */ protected sendWithSmtp(options: EmailOptions): Promise<EmailResponse>; /** * Send an email using SendGrid * * @param options - Email options * @returns Promise<EmailResponse> - Response with success status and message ID * @private */ private sendWithSendGrid; /** * Send an email using SES * * @param options - Email options * @returns Promise<EmailResponse> - Response with success status and message ID * @private */ private sendWithSes; /** * Encode attachment content for SendGrid * @private */ private encodeAttachmentContent; /** * Send a plain text email * * @param to - Recipient(s) * @param subject - Email subject * @param text - Plain text content * @param options - Additional email options * @returns Promise<EmailResponse> - Response with success status and message ID */ sendPlainText(to: EmailOptions['to'], subject: string, text: string, options?: Partial<EmailOptions>): Promise<EmailResponse>; /** * Send an HTML email * * @param to - Recipient(s) * @param subject - Email subject * @param html - HTML content * @param options - Additional email options * @returns Promise<EmailResponse> - Response with success status and message ID */ sendHtml(to: EmailOptions['to'], subject: string, html: string, options?: Partial<EmailOptions>): Promise<EmailResponse>; /** * Format recipients to the format expected by nodemailer * * @param recipients - Single recipient or array of recipients * @returns string - Formatted recipients string */ private formatRecipients; } //# sourceMappingURL=email.service.d.ts.map