update
This commit is contained in:
@ -38,6 +38,8 @@ export class Email {
|
||||
mightBeSpam: boolean;
|
||||
priority: 'high' | 'normal' | 'low';
|
||||
variables: Record<string, any>;
|
||||
private envelopeFrom: string;
|
||||
private messageId: string;
|
||||
|
||||
// Static validator instance for reuse
|
||||
private static emailValidator: EmailValidator;
|
||||
@ -89,6 +91,12 @@ export class Email {
|
||||
|
||||
// Set template variables
|
||||
this.variables = options.variables || {};
|
||||
|
||||
// Initialize envelope from (defaults to the from address)
|
||||
this.envelopeFrom = this.from;
|
||||
|
||||
// Generate message ID if not provided
|
||||
this.messageId = `<${Date.now()}.${Math.random().toString(36).substring(2, 15)}@${this.getFromDomain() || 'localhost'}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -468,6 +476,53 @@ export class Email {
|
||||
return smartmail;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the from email address
|
||||
* @returns The from email address
|
||||
*/
|
||||
public getFromEmail(): string {
|
||||
return this.from;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message ID
|
||||
* @returns The message ID
|
||||
*/
|
||||
public getMessageId(): string {
|
||||
return this.messageId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a custom message ID
|
||||
* @param id The message ID to set
|
||||
* @returns This instance for method chaining
|
||||
*/
|
||||
public setMessageId(id: string): this {
|
||||
this.messageId = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the envelope from address (return-path)
|
||||
* @returns The envelope from address
|
||||
*/
|
||||
public getEnvelopeFrom(): string {
|
||||
return this.envelopeFrom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the envelope from address (return-path)
|
||||
* @param address The envelope from address to set
|
||||
* @returns This instance for method chaining
|
||||
*/
|
||||
public setEnvelopeFrom(address: string): this {
|
||||
if (!this.isValidEmail(address)) {
|
||||
throw new Error(`Invalid envelope from address: ${address}`);
|
||||
}
|
||||
this.envelopeFrom = address;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an RFC822 compliant email string
|
||||
* @param variables Optional template variables to apply
|
||||
@ -491,6 +546,8 @@ export class Email {
|
||||
|
||||
result += `Subject: ${processedSubject}\r\n`;
|
||||
result += `Date: ${new Date().toUTCString()}\r\n`;
|
||||
result += `Message-ID: ${this.messageId}\r\n`;
|
||||
result += `Return-Path: <${this.envelopeFrom}>\r\n`;
|
||||
|
||||
// Add custom headers
|
||||
for (const [key, value] of Object.entries(this.headers)) {
|
||||
|
Reference in New Issue
Block a user