@454creative/easy-email
Version:
A framework-agnostic email service library for Node.js with observability and monitoring
131 lines • 4.43 kB
TypeScript
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