@tc-libs/email-sender 0.17.0 → 0.18.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/package.json
CHANGED
|
@@ -2,14 +2,27 @@ import { ModuleMetadata } from '@nestjs/common';
|
|
|
2
2
|
import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface';
|
|
3
3
|
export declare const EMAIL_SENDER_CONFIG_OPTIONS = "EMAIL_SENDER_CONFIG_OPTIONS";
|
|
4
4
|
export interface EmailSenderOptions {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
email: {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
from: string;
|
|
8
|
+
cc: string[];
|
|
9
|
+
bcc: string[];
|
|
10
|
+
mailgun: {
|
|
11
|
+
host: string;
|
|
12
|
+
key: string;
|
|
13
|
+
domain: string;
|
|
14
|
+
};
|
|
15
|
+
templateDir: string;
|
|
16
|
+
};
|
|
17
|
+
app: {
|
|
18
|
+
endpoints: {
|
|
19
|
+
backoffice: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
aws: {
|
|
23
|
+
s3: {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
};
|
|
13
26
|
};
|
|
14
27
|
}
|
|
15
28
|
type EmailSenderAsyncOptions = Pick<ModuleMetadata, 'imports'> & Pick<FactoryProvider<EmailSenderOptions>, 'useFactory' | 'inject'>;
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
import { TemplateFunction } from 'ejs';
|
|
2
1
|
import { Mailgun, Attachment } from 'mailgun-js';
|
|
3
|
-
import { IEmailOptions, MailingListAdd, MailingListUpdate,
|
|
2
|
+
import { IEmailOptions, MailingListAdd, MailingListUpdate, MailgunOverrides } from '../interfaces/email-sender.type';
|
|
4
3
|
import { Logger } from '@nestjs/common';
|
|
5
|
-
import { AbstractService } from '@tc-libs/service';
|
|
6
4
|
import { EmailSenderOptions } from '../email-sender.module.options';
|
|
5
|
+
import { AbstractService } from '@tc-libs/service';
|
|
7
6
|
import { EmailDoc, EmailEntity } from '../repository/entities/email.entity';
|
|
8
7
|
import { PaginationService } from '@tc-libs/pagination';
|
|
9
8
|
import { EmailRepository } from '../repository/repositories/email.repository';
|
|
9
|
+
import { SendTemplateDto } from '../dtos/email.dto';
|
|
10
10
|
export declare class EmailSenderService extends AbstractService<EmailEntity, EmailDoc> {
|
|
11
11
|
private readonly _email;
|
|
12
12
|
protected readonly _paging: PaginationService;
|
|
13
13
|
readonly _options: EmailSenderOptions;
|
|
14
14
|
logger: Logger;
|
|
15
15
|
private _smtp;
|
|
16
|
+
private _templateDir;
|
|
17
|
+
private _sharedVariables;
|
|
18
|
+
private _cdn;
|
|
19
|
+
private _backoffice;
|
|
16
20
|
constructor(_email: EmailRepository, _paging: PaginationService, _options: EmailSenderOptions);
|
|
17
21
|
createAttachment(data: any, filename: any, contentType: any, mailgunOverride?: MailgunOverrides): Attachment | null;
|
|
18
22
|
private _createClient;
|
|
19
23
|
private _send;
|
|
20
24
|
private _buildRecipients;
|
|
21
25
|
private _labelCompiler;
|
|
22
|
-
|
|
26
|
+
private _getCompiledTemplate;
|
|
27
|
+
private _sendTemplate;
|
|
28
|
+
sendTemplate({ lang, template, options, variables }: SendTemplateDto): Promise<boolean>;
|
|
23
29
|
sendText(text: string, subject: string, options: IEmailOptions): Promise<boolean>;
|
|
24
30
|
addToMailingList(client: Mailgun, list: string, body: MailingListAdd): Promise<boolean>;
|
|
25
31
|
updateToMailingList(client: Mailgun, list: string, email: string, body: MailingListUpdate): Promise<boolean>;
|
|
@@ -3,10 +3,15 @@ var EmailSenderService_1;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.EmailSenderService = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
|
+
const ejs_1 = require("ejs");
|
|
6
7
|
const mailgun_js_1 = tslib_1.__importDefault(require("mailgun-js"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
11
|
+
const { readFile: readFileAsync } = fs_1.promises;
|
|
7
12
|
const common_1 = require("@nestjs/common");
|
|
8
|
-
const service_1 = require("@tc-libs/service");
|
|
9
13
|
const email_sender_module_options_1 = require("../email-sender.module.options");
|
|
14
|
+
const service_1 = require("@tc-libs/service");
|
|
10
15
|
const pagination_1 = require("@tc-libs/pagination");
|
|
11
16
|
const email_repository_1 = require("../repository/repositories/email.repository");
|
|
12
17
|
let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends service_1.AbstractService {
|
|
@@ -16,17 +21,21 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
16
21
|
this._paging = _paging;
|
|
17
22
|
this._options = _options;
|
|
18
23
|
this.logger = new common_1.Logger(EmailSenderService_1.name);
|
|
24
|
+
this._sharedVariables = ['backoffice', 'cdn'];
|
|
19
25
|
this._smtp = {
|
|
20
|
-
from: _options.from,
|
|
21
|
-
enabled: _options.enabled,
|
|
26
|
+
from: _options.email.from,
|
|
27
|
+
enabled: _options.email.enabled,
|
|
22
28
|
cc: [],
|
|
23
29
|
bcc: [],
|
|
24
30
|
mailgun: {
|
|
25
|
-
host: _options.mailgun.host,
|
|
26
|
-
domain: _options.mailgun.domain,
|
|
27
|
-
key: _options.mailgun.key,
|
|
31
|
+
host: _options.email.mailgun.host,
|
|
32
|
+
domain: _options.email.mailgun.domain,
|
|
33
|
+
key: _options.email.mailgun.key,
|
|
28
34
|
},
|
|
29
35
|
};
|
|
36
|
+
this._templateDir = _options.email.templateDir;
|
|
37
|
+
this._backoffice = _options.app.endpoints.backoffice;
|
|
38
|
+
this._cdn = _options.aws.s3.baseUrl;
|
|
30
39
|
}
|
|
31
40
|
createAttachment(data, filename, contentType, mailgunOverride) {
|
|
32
41
|
if (!this._smtp.enabled)
|
|
@@ -91,7 +100,14 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
91
100
|
return compiled;
|
|
92
101
|
};
|
|
93
102
|
}
|
|
94
|
-
async
|
|
103
|
+
async _getCompiledTemplate(templateHtml) {
|
|
104
|
+
return (0, ejs_1.compile)(templateHtml, {
|
|
105
|
+
delimiter: '?',
|
|
106
|
+
openDelimiter: '[',
|
|
107
|
+
closeDelimiter: ']',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async _sendTemplate(email, tplCompiled, options, variables) {
|
|
95
111
|
// skip if email are disabled
|
|
96
112
|
if (!this._smtp.enabled)
|
|
97
113
|
return false;
|
|
@@ -116,6 +132,48 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
116
132
|
const client = this._createClient(options.mailgunOverride);
|
|
117
133
|
return this._send(client, obj);
|
|
118
134
|
}
|
|
135
|
+
async sendTemplate({ lang, template, options, variables }) {
|
|
136
|
+
const tplPath = (0, path_1.resolve)((0, path_1.join)(this._templateDir, `${template}.html`));
|
|
137
|
+
let templateHtml;
|
|
138
|
+
if (options?.remoteTemplatePath) {
|
|
139
|
+
const response = await axios_1.default.get(options.remoteTemplatePath);
|
|
140
|
+
templateHtml = response.data;
|
|
141
|
+
}
|
|
142
|
+
else
|
|
143
|
+
templateHtml = await readFileAsync(tplPath, 'utf8');
|
|
144
|
+
const templateHtmlFunc = await this._getCompiledTemplate(templateHtml);
|
|
145
|
+
// get db email template for subject and languages
|
|
146
|
+
const dbTemplate = await this._email.findOne({ code: template }, {
|
|
147
|
+
returnPlain: true,
|
|
148
|
+
select: {
|
|
149
|
+
[`subject.${lang}`]: true,
|
|
150
|
+
from: true,
|
|
151
|
+
to: true,
|
|
152
|
+
code: true,
|
|
153
|
+
variables: true,
|
|
154
|
+
['labels.code']: true,
|
|
155
|
+
['labels.type']: true,
|
|
156
|
+
[`labels.translations.${lang}`]: true,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
const labels = {};
|
|
160
|
+
// map labels in key value store
|
|
161
|
+
// TODO: RE ENABLE i18n
|
|
162
|
+
for (const label of dbTemplate.labels) {
|
|
163
|
+
labels[label.code] =
|
|
164
|
+
label.translations[lang] || `MISSING LABEL [${label.code}]`;
|
|
165
|
+
}
|
|
166
|
+
return this._sendTemplate({
|
|
167
|
+
code: dbTemplate.code,
|
|
168
|
+
subject: options?.subject ?? dbTemplate.subject[lang],
|
|
169
|
+
labels,
|
|
170
|
+
variables: [...dbTemplate.variables, ...this._sharedVariables],
|
|
171
|
+
bcc: dbTemplate.bcc,
|
|
172
|
+
cc: dbTemplate.cc,
|
|
173
|
+
from: dbTemplate.from,
|
|
174
|
+
to: dbTemplate.to,
|
|
175
|
+
}, templateHtmlFunc, options, { ...variables, cdn: this._cdn, backoffice: this._backoffice });
|
|
176
|
+
}
|
|
119
177
|
sendText(text, subject, options) {
|
|
120
178
|
// extract recipients
|
|
121
179
|
const { from, to, cc, bcc } = this._buildRecipients(null, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender.service.js","sourceRoot":"","sources":["../../../../../packages/email-sender/src/services/email-sender.service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"email-sender.service.js","sourceRoot":"","sources":["../../../../../packages/email-sender/src/services/email-sender.service.ts"],"names":[],"mappings":"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"}
|