@studiosonrai/nestjs-email 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/email.constants.d.ts +2 -0
- package/dist/src/email.constants.js +6 -0
- package/dist/src/email.constants.js.map +1 -0
- package/dist/src/email.module.d.ts +8 -0
- package/dist/src/email.module.js +105 -0
- package/dist/src/email.module.js.map +1 -0
- package/dist/src/email.service.d.ts +11 -0
- package/dist/src/email.service.js +59 -0
- package/dist/src/email.service.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +24 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces/email.interfaces.d.ts +74 -0
- package/dist/src/interfaces/email.interfaces.js +3 -0
- package/dist/src/interfaces/email.interfaces.js.map +1 -0
- package/dist/src/providers/azure.provider.d.ts +16 -0
- package/dist/src/providers/azure.provider.js +183 -0
- package/dist/src/providers/azure.provider.js.map +1 -0
- package/dist/src/providers/index.d.ts +2 -0
- package/dist/src/providers/index.js +19 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/providers/smtp.provider.d.ts +17 -0
- package/dist/src/providers/smtp.provider.js +152 -0
- package/dist/src/providers/smtp.provider.js.map +1 -0
- package/dist/src/template.service.d.ts +9 -0
- package/dist/src/template.service.js +76 -0
- package/dist/src/template.service.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EMAIL_PROVIDER = exports.EMAIL_MODULE_OPTIONS = void 0;
|
|
4
|
+
exports.EMAIL_MODULE_OPTIONS = 'EMAIL_MODULE_OPTIONS';
|
|
5
|
+
exports.EMAIL_PROVIDER = 'EMAIL_PROVIDER';
|
|
6
|
+
//# sourceMappingURL=email.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.constants.js","sourceRoot":"","sources":["../../src/email.constants.ts"],"names":[],"mappings":";;;AAGa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAK9C,QAAA,cAAc,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { EmailModuleOptions, EmailModuleAsyncOptions } from './interfaces/email.interfaces';
|
|
3
|
+
export declare class EmailModule {
|
|
4
|
+
static forRoot(options: EmailModuleOptions): DynamicModule;
|
|
5
|
+
static forRootAsync(options: EmailModuleAsyncOptions): DynamicModule;
|
|
6
|
+
private static createAsyncProviders;
|
|
7
|
+
private static createAsyncOptionsProvider;
|
|
8
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var EmailModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.EmailModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const email_service_1 = require("./email.service");
|
|
13
|
+
const email_constants_1 = require("./email.constants");
|
|
14
|
+
const smtp_provider_1 = require("./providers/smtp.provider");
|
|
15
|
+
const azure_provider_1 = require("./providers/azure.provider");
|
|
16
|
+
function createEmailProvider(options) {
|
|
17
|
+
const providerOptions = {
|
|
18
|
+
defaultFrom: options.defaultFrom,
|
|
19
|
+
imageCompression: options.imageCompression,
|
|
20
|
+
verbose: options.verbose,
|
|
21
|
+
};
|
|
22
|
+
if (options.provider === 'smtp') {
|
|
23
|
+
if (!options.smtp) {
|
|
24
|
+
throw new Error('SMTP configuration is required when provider is "smtp"');
|
|
25
|
+
}
|
|
26
|
+
return new smtp_provider_1.SmtpEmailProvider(options.smtp, providerOptions);
|
|
27
|
+
}
|
|
28
|
+
if (options.provider === 'azure') {
|
|
29
|
+
if (!options.azure) {
|
|
30
|
+
throw new Error('Azure configuration is required when provider is "azure"');
|
|
31
|
+
}
|
|
32
|
+
return new azure_provider_1.AzureEmailProvider(options.azure, providerOptions);
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Unknown email provider: ${options.provider}`);
|
|
35
|
+
}
|
|
36
|
+
let EmailModule = EmailModule_1 = class EmailModule {
|
|
37
|
+
static forRoot(options) {
|
|
38
|
+
const optionsProvider = {
|
|
39
|
+
provide: email_constants_1.EMAIL_MODULE_OPTIONS,
|
|
40
|
+
useValue: options,
|
|
41
|
+
};
|
|
42
|
+
const emailProvider = {
|
|
43
|
+
provide: email_constants_1.EMAIL_PROVIDER,
|
|
44
|
+
useValue: createEmailProvider(options),
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
module: EmailModule_1,
|
|
48
|
+
providers: [optionsProvider, emailProvider, email_service_1.EmailService],
|
|
49
|
+
exports: [email_service_1.EmailService, email_constants_1.EMAIL_MODULE_OPTIONS, email_constants_1.EMAIL_PROVIDER],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
static forRootAsync(options) {
|
|
53
|
+
const asyncProviders = this.createAsyncProviders(options);
|
|
54
|
+
const emailProvider = {
|
|
55
|
+
provide: email_constants_1.EMAIL_PROVIDER,
|
|
56
|
+
useFactory: (opts) => createEmailProvider(opts),
|
|
57
|
+
inject: [email_constants_1.EMAIL_MODULE_OPTIONS],
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
module: EmailModule_1,
|
|
61
|
+
imports: options.imports ?? [],
|
|
62
|
+
providers: [...asyncProviders, emailProvider, email_service_1.EmailService],
|
|
63
|
+
exports: [email_service_1.EmailService, email_constants_1.EMAIL_MODULE_OPTIONS, email_constants_1.EMAIL_PROVIDER],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
static createAsyncProviders(options) {
|
|
67
|
+
if (options.useExisting || options.useFactory) {
|
|
68
|
+
return [this.createAsyncOptionsProvider(options)];
|
|
69
|
+
}
|
|
70
|
+
if (options.useClass) {
|
|
71
|
+
return [
|
|
72
|
+
this.createAsyncOptionsProvider(options),
|
|
73
|
+
{
|
|
74
|
+
provide: options.useClass,
|
|
75
|
+
useClass: options.useClass,
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
throw new Error('Invalid EmailModuleAsyncOptions: provide useExisting, useClass, or useFactory');
|
|
80
|
+
}
|
|
81
|
+
static createAsyncOptionsProvider(options) {
|
|
82
|
+
if (options.useFactory) {
|
|
83
|
+
return {
|
|
84
|
+
provide: email_constants_1.EMAIL_MODULE_OPTIONS,
|
|
85
|
+
useFactory: options.useFactory,
|
|
86
|
+
inject: options.inject ?? [],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const inject = options.useExisting ?? options.useClass;
|
|
90
|
+
if (!inject) {
|
|
91
|
+
throw new Error('Invalid EmailModuleAsyncOptions: provide useExisting, useClass, or useFactory');
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
provide: email_constants_1.EMAIL_MODULE_OPTIONS,
|
|
95
|
+
useFactory: async (optionsFactory) => optionsFactory.createEmailOptions(),
|
|
96
|
+
inject: [inject],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.EmailModule = EmailModule;
|
|
101
|
+
exports.EmailModule = EmailModule = EmailModule_1 = __decorate([
|
|
102
|
+
(0, common_1.Global)(),
|
|
103
|
+
(0, common_1.Module)({})
|
|
104
|
+
], EmailModule);
|
|
105
|
+
//# sourceMappingURL=email.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.module.js","sourceRoot":"","sources":["../../src/email.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EmailProvider, SendEmailOptions, SendEmailResult, EmailModuleOptions, EmailAttachment } from './interfaces/email.interfaces';
|
|
2
|
+
export declare class EmailService {
|
|
3
|
+
private readonly options;
|
|
4
|
+
private readonly provider;
|
|
5
|
+
constructor(options: EmailModuleOptions, provider: EmailProvider);
|
|
6
|
+
sendEmail(to: string | string[], subject: string, body: string, attachments?: EmailAttachment[]): Promise<SendEmailResult>;
|
|
7
|
+
send(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
8
|
+
trySend(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
9
|
+
isReady(): boolean;
|
|
10
|
+
getProviderType(): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.EmailService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const email_constants_1 = require("./email.constants");
|
|
18
|
+
let EmailService = class EmailService {
|
|
19
|
+
constructor(options, provider) {
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.provider = provider;
|
|
22
|
+
}
|
|
23
|
+
async sendEmail(to, subject, body, attachments) {
|
|
24
|
+
const result = await this.provider.sendEmail({
|
|
25
|
+
to,
|
|
26
|
+
subject,
|
|
27
|
+
html: body,
|
|
28
|
+
attachments,
|
|
29
|
+
});
|
|
30
|
+
if (!result.success) {
|
|
31
|
+
throw new common_1.InternalServerErrorException(result.error?.message ?? 'Failed to send email');
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
async send(options) {
|
|
36
|
+
const result = await this.provider.sendEmail(options);
|
|
37
|
+
if (!result.success) {
|
|
38
|
+
throw new common_1.InternalServerErrorException(result.error?.message ?? 'Failed to send email');
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
async trySend(options) {
|
|
43
|
+
return this.provider.sendEmail(options);
|
|
44
|
+
}
|
|
45
|
+
isReady() {
|
|
46
|
+
return this.provider.isReady();
|
|
47
|
+
}
|
|
48
|
+
getProviderType() {
|
|
49
|
+
return this.options.provider;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.EmailService = EmailService;
|
|
53
|
+
exports.EmailService = EmailService = __decorate([
|
|
54
|
+
(0, common_1.Injectable)(),
|
|
55
|
+
__param(0, (0, common_1.Inject)(email_constants_1.EMAIL_MODULE_OPTIONS)),
|
|
56
|
+
__param(1, (0, common_1.Inject)(email_constants_1.EMAIL_PROVIDER)),
|
|
57
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
58
|
+
], EmailService);
|
|
59
|
+
//# sourceMappingURL=email.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../src/email.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkF;AAQlF,uDAAyE;AAMlE,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YAEmB,OAA2B,EAE3B,QAAuB;QAFvB,YAAO,GAAP,OAAO,CAAoB;QAE3B,aAAQ,GAAR,QAAQ,CAAe;IACvC,CAAC;IAUJ,KAAK,CAAC,SAAS,CACb,EAAqB,EACrB,OAAe,EACf,IAAY,EACZ,WAA+B;QAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3C,EAAE;YACF,OAAO;YACP,IAAI,EAAE,IAAI;YACV,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,qCAA4B,CACpC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,sBAAsB,CAChD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,KAAK,CAAC,IAAI,CAAC,OAAyB;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,qCAA4B,CACpC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,sBAAsB,CAChD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAKD,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;CACF,CAAA;AA7EY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,sCAAoB,CAAC,CAAA;IAE5B,WAAA,IAAA,eAAM,EAAC,gCAAc,CAAC,CAAA;;GAJd,YAAY,CA6ExB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './email.module';
|
|
2
|
+
export * from './email.service';
|
|
3
|
+
export * from './email.constants';
|
|
4
|
+
export * from './template.service';
|
|
5
|
+
export * from './interfaces/email.interfaces';
|
|
6
|
+
export * from './providers/smtp.provider';
|
|
7
|
+
export * from './providers/azure.provider';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./email.module"), exports);
|
|
18
|
+
__exportStar(require("./email.service"), exports);
|
|
19
|
+
__exportStar(require("./email.constants"), exports);
|
|
20
|
+
__exportStar(require("./template.service"), exports);
|
|
21
|
+
__exportStar(require("./interfaces/email.interfaces"), exports);
|
|
22
|
+
__exportStar(require("./providers/smtp.provider"), exports);
|
|
23
|
+
__exportStar(require("./providers/azure.provider"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,iDAA+B;AAC/B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AAGnC,gEAA8C;AAG9C,4DAA0C;AAC1C,6DAA2C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ModuleMetadata, Type } from '@nestjs/common';
|
|
2
|
+
export interface EmailAttachment {
|
|
3
|
+
filename: string;
|
|
4
|
+
content: Buffer | string;
|
|
5
|
+
contentType?: string;
|
|
6
|
+
encoding?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SendEmailOptions {
|
|
9
|
+
to: string | string[];
|
|
10
|
+
subject: string;
|
|
11
|
+
html?: string;
|
|
12
|
+
text?: string;
|
|
13
|
+
attachments?: EmailAttachment[];
|
|
14
|
+
from?: string;
|
|
15
|
+
cc?: string | string[];
|
|
16
|
+
bcc?: string | string[];
|
|
17
|
+
replyTo?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SendEmailResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
messageId?: string;
|
|
22
|
+
error?: Error;
|
|
23
|
+
}
|
|
24
|
+
export interface SmtpTransportConfig {
|
|
25
|
+
host: string;
|
|
26
|
+
port: number;
|
|
27
|
+
secure?: boolean;
|
|
28
|
+
auth?: {
|
|
29
|
+
user: string;
|
|
30
|
+
pass: string;
|
|
31
|
+
};
|
|
32
|
+
tls?: {
|
|
33
|
+
rejectUnauthorized?: boolean;
|
|
34
|
+
};
|
|
35
|
+
connectionTimeout?: number;
|
|
36
|
+
greetingTimeout?: number;
|
|
37
|
+
socketTimeout?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface AzureEmailConfig {
|
|
40
|
+
connectionString: string;
|
|
41
|
+
senderAddress: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ImageCompressionOptions {
|
|
44
|
+
enabled: boolean;
|
|
45
|
+
maxWidth?: number;
|
|
46
|
+
quality?: number;
|
|
47
|
+
}
|
|
48
|
+
export type EmailProviderType = 'smtp' | 'azure';
|
|
49
|
+
export interface EmailModuleOptions {
|
|
50
|
+
provider: EmailProviderType;
|
|
51
|
+
smtp?: SmtpTransportConfig;
|
|
52
|
+
azure?: AzureEmailConfig;
|
|
53
|
+
defaultFrom?: string;
|
|
54
|
+
imageCompression?: ImageCompressionOptions;
|
|
55
|
+
verbose?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface EmailModuleOptionsFactory {
|
|
58
|
+
createEmailOptions(): Promise<EmailModuleOptions> | EmailModuleOptions;
|
|
59
|
+
}
|
|
60
|
+
export interface EmailModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
61
|
+
useExisting?: Type<EmailModuleOptionsFactory>;
|
|
62
|
+
useClass?: Type<EmailModuleOptionsFactory>;
|
|
63
|
+
useFactory?: (...args: any[]) => Promise<EmailModuleOptions> | EmailModuleOptions;
|
|
64
|
+
inject?: any[];
|
|
65
|
+
}
|
|
66
|
+
export interface EmailProvider {
|
|
67
|
+
sendEmail(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
68
|
+
isReady(): boolean;
|
|
69
|
+
}
|
|
70
|
+
export type TemplateData = Record<string, any>;
|
|
71
|
+
export interface TemplateValidationResult {
|
|
72
|
+
isValid: boolean;
|
|
73
|
+
missingKeys: string[];
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/email.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EmailProvider, SendEmailOptions, SendEmailResult, AzureEmailConfig, ImageCompressionOptions } from '../interfaces/email.interfaces';
|
|
2
|
+
export declare class AzureEmailProvider implements EmailProvider {
|
|
3
|
+
private emailClient;
|
|
4
|
+
private senderAddress;
|
|
5
|
+
private ready;
|
|
6
|
+
private imageCompression?;
|
|
7
|
+
private verbose;
|
|
8
|
+
constructor(config: AzureEmailConfig, options?: {
|
|
9
|
+
imageCompression?: ImageCompressionOptions;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
});
|
|
12
|
+
private initializeClient;
|
|
13
|
+
private compressAttachment;
|
|
14
|
+
sendEmail(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
15
|
+
isReady(): boolean;
|
|
16
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AzureEmailProvider = void 0;
|
|
37
|
+
class AzureEmailProvider {
|
|
38
|
+
constructor(config, options) {
|
|
39
|
+
this.ready = false;
|
|
40
|
+
this.senderAddress = config.senderAddress;
|
|
41
|
+
this.imageCompression = options?.imageCompression;
|
|
42
|
+
this.verbose = options?.verbose ?? false;
|
|
43
|
+
this.initializeClient(config.connectionString);
|
|
44
|
+
}
|
|
45
|
+
async initializeClient(connectionString) {
|
|
46
|
+
try {
|
|
47
|
+
const { EmailClient } = await Promise.resolve().then(() => __importStar(require('@azure/communication-email')));
|
|
48
|
+
this.emailClient = new EmailClient(connectionString);
|
|
49
|
+
this.ready = true;
|
|
50
|
+
if (this.verbose) {
|
|
51
|
+
console.log('[EmailModule] Azure Communication Email provider initialized');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('[EmailModule] Failed to initialize Azure Email provider:', error);
|
|
56
|
+
throw new Error('Failed to initialize Azure Email provider. Make sure @azure/communication-email is installed.');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async compressAttachment(attachment) {
|
|
60
|
+
if (!this.imageCompression?.enabled) {
|
|
61
|
+
return attachment;
|
|
62
|
+
}
|
|
63
|
+
if (!attachment.contentType?.startsWith('image/')) {
|
|
64
|
+
return attachment;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const sharp = (await Promise.resolve().then(() => __importStar(require('sharp')))).default;
|
|
68
|
+
const buffer = attachment.content instanceof Buffer
|
|
69
|
+
? attachment.content
|
|
70
|
+
: Buffer.from(attachment.content, 'base64');
|
|
71
|
+
const compressedBuffer = await sharp(buffer)
|
|
72
|
+
.resize({
|
|
73
|
+
width: this.imageCompression.maxWidth ?? 1200,
|
|
74
|
+
withoutEnlargement: true,
|
|
75
|
+
})
|
|
76
|
+
.jpeg({ quality: this.imageCompression.quality ?? 75 })
|
|
77
|
+
.toBuffer();
|
|
78
|
+
return {
|
|
79
|
+
...attachment,
|
|
80
|
+
content: compressedBuffer,
|
|
81
|
+
contentType: 'image/jpeg',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (this.verbose) {
|
|
86
|
+
console.warn(`[EmailModule] Failed to compress ${attachment.filename}, sending original.`);
|
|
87
|
+
}
|
|
88
|
+
return attachment;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async sendEmail(options) {
|
|
92
|
+
if (!this.emailClient) {
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
error: new Error('Azure Email client not initialized'),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
let processedAttachments = [];
|
|
100
|
+
if (options.attachments?.length) {
|
|
101
|
+
processedAttachments = await Promise.all(options.attachments.map((att) => this.compressAttachment(att)));
|
|
102
|
+
}
|
|
103
|
+
if (processedAttachments.length > 0) {
|
|
104
|
+
const totalSize = processedAttachments.reduce((acc, att) => {
|
|
105
|
+
const size = att.content instanceof Buffer
|
|
106
|
+
? att.content.length
|
|
107
|
+
: Buffer.byteLength(att.content, 'base64');
|
|
108
|
+
return acc + size;
|
|
109
|
+
}, 0);
|
|
110
|
+
if (totalSize > 10 * 1024 * 1024) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
error: new Error('Attachments exceed Azure 10MB email size limit'),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const toRecipients = Array.isArray(options.to)
|
|
118
|
+
? options.to.map((addr) => ({ address: addr }))
|
|
119
|
+
: [{ address: options.to }];
|
|
120
|
+
const emailMessage = {
|
|
121
|
+
senderAddress: options.from ?? this.senderAddress,
|
|
122
|
+
content: {
|
|
123
|
+
subject: options.subject,
|
|
124
|
+
html: options.html,
|
|
125
|
+
plainText: options.text,
|
|
126
|
+
},
|
|
127
|
+
recipients: {
|
|
128
|
+
to: toRecipients,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
if (options.cc) {
|
|
132
|
+
const ccRecipients = Array.isArray(options.cc)
|
|
133
|
+
? options.cc.map((addr) => ({ address: addr }))
|
|
134
|
+
: [{ address: options.cc }];
|
|
135
|
+
emailMessage.recipients.cc = ccRecipients;
|
|
136
|
+
}
|
|
137
|
+
if (options.bcc) {
|
|
138
|
+
const bccRecipients = Array.isArray(options.bcc)
|
|
139
|
+
? options.bcc.map((addr) => ({ address: addr }))
|
|
140
|
+
: [{ address: options.bcc }];
|
|
141
|
+
emailMessage.recipients.bcc = bccRecipients;
|
|
142
|
+
}
|
|
143
|
+
if (options.replyTo) {
|
|
144
|
+
emailMessage.replyTo = [{ address: options.replyTo }];
|
|
145
|
+
}
|
|
146
|
+
if (processedAttachments.length > 0) {
|
|
147
|
+
emailMessage.attachments = processedAttachments.map((att) => {
|
|
148
|
+
const contentBase64 = att.content instanceof Buffer
|
|
149
|
+
? att.content.toString('base64')
|
|
150
|
+
: att.content;
|
|
151
|
+
return {
|
|
152
|
+
name: att.filename,
|
|
153
|
+
contentType: att.contentType ?? 'application/octet-stream',
|
|
154
|
+
contentInBase64: typeof contentBase64 === 'string'
|
|
155
|
+
? contentBase64
|
|
156
|
+
: contentBase64.toString('base64'),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const poller = await this.emailClient.beginSend(emailMessage);
|
|
161
|
+
const result = await poller.pollUntilDone();
|
|
162
|
+
if (this.verbose) {
|
|
163
|
+
console.log(`[EmailModule] Email sent successfully via Azure to ${options.to}`);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
success: true,
|
|
167
|
+
messageId: result?.id,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.error('[EmailModule] Azure send error:', error);
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
isReady() {
|
|
179
|
+
return this.ready;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.AzureEmailProvider = AzureEmailProvider;
|
|
183
|
+
//# sourceMappingURL=azure.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure.provider.js","sourceRoot":"","sources":["../../../src/providers/azure.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./smtp.provider"), exports);
|
|
18
|
+
__exportStar(require("./azure.provider"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EmailProvider, SendEmailOptions, SendEmailResult, SmtpTransportConfig, ImageCompressionOptions } from '../interfaces/email.interfaces';
|
|
2
|
+
export declare class SmtpEmailProvider implements EmailProvider {
|
|
3
|
+
private transporter;
|
|
4
|
+
private ready;
|
|
5
|
+
private defaultFrom?;
|
|
6
|
+
private imageCompression?;
|
|
7
|
+
private verbose;
|
|
8
|
+
constructor(config: SmtpTransportConfig, options?: {
|
|
9
|
+
defaultFrom?: string;
|
|
10
|
+
imageCompression?: ImageCompressionOptions;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
});
|
|
13
|
+
private initializeTransporter;
|
|
14
|
+
private compressAttachment;
|
|
15
|
+
sendEmail(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
16
|
+
isReady(): boolean;
|
|
17
|
+
}
|