@stamhoofd/email 2.78.3 → 2.79.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.
@@ -1,13 +1,12 @@
1
- import { I18n } from '@stamhoofd/backend-i18n';
2
1
  import Mail from 'nodemailer/lib/mailer';
3
2
  export type EmailInterfaceRecipient = {
4
3
  name?: string | null;
5
4
  email: string;
6
5
  };
7
6
  export type EmailInterfaceBase = {
8
- to: string | EmailInterfaceRecipient[];
9
- bcc?: string;
10
- replyTo?: string;
7
+ to: EmailInterfaceRecipient[];
8
+ bcc?: EmailInterfaceRecipient[];
9
+ replyTo?: EmailInterfaceRecipient;
11
10
  subject: string;
12
11
  text?: string;
13
12
  html?: string;
@@ -24,7 +23,7 @@ export type EmailInterfaceBase = {
24
23
  callback?: (error: Error | null) => void;
25
24
  };
26
25
  export type EmailInterface = EmailInterfaceBase & {
27
- from: string;
26
+ from: EmailInterfaceRecipient;
28
27
  };
29
28
  export type EmailBuilder = () => EmailInterface | undefined;
30
29
  export type InternalEmailData = {
@@ -61,13 +60,14 @@ declare class EmailStatic {
61
60
  private filterWhitelist;
62
61
  private doSend;
63
62
  private sendApi;
64
- /**
65
- * @deprecated
66
- * Please use EmailBuilder.sendEmailTemplate
67
- */
68
- getInternalEmailFor(i18n: I18n): string;
69
- getWebmasterFromEmail(): string;
70
- getWebmasterToEmail(): string;
63
+ getWebmasterFromEmail(): {
64
+ name: string;
65
+ email: string;
66
+ };
67
+ getWebmasterToEmail(): {
68
+ name: string;
69
+ email: string;
70
+ };
71
71
  /**
72
72
  * Send an email to the webmaster
73
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/classes/Email.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAK/C,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAQzC,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,cAAM,WAAW;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,wBAAwB,EAAE,IAAI,CAAC;IAC/B,GAAG,SAAM;IAET,YAAY,EAAE,YAAY,EAAE,CAAM;IAClC,OAAO,UAAS;IAEhB,aAAa;IAyDb,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,EAAE,GAAG,uBAAuB,EAAE;IAS1E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAmFzC,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,eAAe;YAUT,MAAM;YAkON,OAAO;IAkCrB;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI;IAK9B,qBAAqB;IAIrB,mBAAmB;IAInB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IAQlD,IAAI,CAAC,IAAI,EAAE,cAAc;IAYzB,QAAQ,CAAC,OAAO,EAAE,YAAY;IAK9B,eAAe,CAAC,OAAO,EAAE,YAAY;CAIxC;AAED,eAAO,MAAM,KAAK,aAAoB,CAAC"}
1
+ {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/classes/Email.ts"],"names":[],"mappings":"AAMA,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAQzC,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,uBAAuB,EAAE,CAAC;IAC9B,GAAG,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAC9C,IAAI,EAAE,uBAAuB,CAAC;CACjC,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AAyBF,cAAM,WAAW;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,wBAAwB,EAAE,IAAI,CAAC;IAC/B,GAAG,SAAM;IAET,YAAY,EAAE,YAAY,EAAE,CAAM;IAClC,OAAO,UAAS;IAEhB,aAAa;IAyDb,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,EAAE,GAAG,uBAAuB,EAAE;IAS1E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAmFzC,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,eAAe;YAUT,MAAM;YAyMN,OAAO;IAkCrB,qBAAqB;;;;IAOrB,mBAAmB;;;;IAOnB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IAQlD,IAAI,CAAC,IAAI,EAAE,cAAc;IAYzB,QAAQ,CAAC,OAAO,EAAE,YAAY;IAK9B,eAAe,CAAC,OAAO,EAAE,YAAY;CAIxC;AAED,eAAO,MAAM,KAAK,aAAoB,CAAC"}
@@ -11,6 +11,25 @@ const nodemailer_1 = tslib_1.__importDefault(require("nodemailer"));
11
11
  const EmailAddress_1 = require("../models/EmailAddress");
12
12
  // Importing postmark returns undefined (this is a bug, so we need to use require)
13
13
  const postmark = require('postmark');
14
+ function emailObjectToString(email) {
15
+ if (!email) {
16
+ return;
17
+ }
18
+ if (email.name) {
19
+ const cleaned = utility_1.Formatter.emailSenderName(email.name);
20
+ if (cleaned.length < 2) {
21
+ return email.email;
22
+ }
23
+ return '"' + email.name.replaceAll('"', '') + '" <' + email.email + '>';
24
+ }
25
+ return email.email;
26
+ }
27
+ function emailObjectsToString(emails) {
28
+ if (emails.length === 0) {
29
+ return;
30
+ }
31
+ return emails.map(emailObjectToString).join(', ');
32
+ }
14
33
  class EmailStatic {
15
34
  transporter;
16
35
  transactionalTransporter;
@@ -204,12 +223,12 @@ class EmailStatic {
204
223
  return recipients;
205
224
  }
206
225
  async doSend(data) {
226
+ let recipients = data.to.filter(({ email }) => utility_1.DataValidator.isEmailValid(email));
207
227
  // Check if this email is not marked as spam
208
228
  // Filter recipients if bounced or spam
209
- let recipients = this.parseTo(data.to);
210
229
  if (recipients.length === 0) {
211
230
  // Invalid string
212
- console.warn('Invalid e-mail string: ' + JSON.stringify(data.to) + '. E-mail skipped');
231
+ console.warn('No recipients for email');
213
232
  try {
214
233
  data.callback?.(new simple_errors_1.SimpleError({
215
234
  code: 'all_filtered',
@@ -244,7 +263,8 @@ class EmailStatic {
244
263
  const whitelist = STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS ?? [];
245
264
  recipients = this.filterWhitelist(recipients, whitelist);
246
265
  }
247
- if (recipients.length === 0) {
266
+ const to = emailObjectsToString(recipients);
267
+ if (!to || recipients.length === 0) {
248
268
  // Invalid string
249
269
  try {
250
270
  data.callback?.(new simple_errors_1.SimpleError({
@@ -258,47 +278,23 @@ class EmailStatic {
258
278
  }
259
279
  return;
260
280
  }
261
- // Rebuild to
262
- const to = recipients.map((recipient) => {
263
- if (!recipient.name) {
264
- return recipient.email;
265
- }
266
- const cleanedName = utility_1.Formatter.emailSenderName(recipient.name);
267
- if (cleanedName.length < 2) {
268
- return recipient.email;
269
- }
270
- return '"' + cleanedName + '" <' + recipient.email + '>';
271
- }).join(', ');
272
281
  // Clean bcc
273
282
  let bccRecipients = [];
274
283
  if (data.bcc) {
275
284
  // Filter
276
- bccRecipients.push(...(await EmailAddress_1.EmailAddress.filterSendTo(this.parseTo(data.bcc))));
285
+ bccRecipients.push(...(await EmailAddress_1.EmailAddress.filterSendTo(data.bcc.filter(({ email }) => utility_1.DataValidator.isEmailValid(email)))));
277
286
  // Filter by environment
278
287
  if (STAMHOOFD.environment !== 'production' || (STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS && STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS.length > 0)) {
279
288
  const whitelist = STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS ?? [];
280
289
  bccRecipients = this.filterWhitelist(bccRecipients, whitelist);
281
290
  }
282
291
  }
283
- // Rebuild to
284
- const bcc = bccRecipients.length === 0
285
- ? undefined
286
- : bccRecipients.map((recipient) => {
287
- if (!recipient.name) {
288
- return recipient.email;
289
- }
290
- const cleanedName = utility_1.Formatter.emailSenderName(recipient.name);
291
- if (cleanedName.length < 2) {
292
- return recipient.email;
293
- }
294
- return '"' + cleanedName + '" <' + recipient.email + '>';
295
- }).join(', ');
296
292
  this.setupIfNeeded();
297
293
  // send mail with defined transport object
298
294
  const mail = {
299
- from: data.from, // sender address
300
- bcc,
301
- replyTo: data.replyTo,
295
+ from: emailObjectToString(data.from), // sender address
296
+ bcc: emailObjectsToString(bccRecipients),
297
+ replyTo: data.replyTo ? emailObjectToString(data.replyTo) : undefined,
302
298
  to,
303
299
  subject: data.subject.substring(0, 1000), // Subject line
304
300
  text: data.text, // plain text body
@@ -318,14 +314,13 @@ class EmailStatic {
318
314
  });
319
315
  }
320
316
  }
321
- const parsedFrom = this.parseEmailStr(data.from);
322
- if (parsedFrom.length !== 1) {
323
- throw new Error('Invalid from email ' + data.from);
317
+ if (!utility_1.DataValidator.isEmailValid(data.from.email)) {
318
+ throw new Error('Invalid from email ' + data.from.email);
324
319
  }
325
320
  try {
326
321
  // Can we send from the transactional email server?
327
322
  if (STAMHOOFD.TRANSACTIONAL_WHITELIST !== undefined && data.type === 'transactional') {
328
- if (!this.matchWhitelist(parsedFrom[0], STAMHOOFD.TRANSACTIONAL_WHITELIST)) {
323
+ if (!this.matchWhitelist(data.from.email, STAMHOOFD.TRANSACTIONAL_WHITELIST)) {
329
324
  // Not supported
330
325
  data.type = 'broadcast';
331
326
  }
@@ -385,10 +380,10 @@ class EmailStatic {
385
380
  }
386
381
  // Email address is not verified.
387
382
  if (STAMHOOFD.environment === 'production') {
388
- if (data.from !== this.getWebmasterFromEmail()) {
383
+ if (data.from.email !== this.getWebmasterFromEmail().email) {
389
384
  this.sendWebmaster({
390
385
  subject: 'E-mail kon niet worden verzonden',
391
- text: 'Een e-mail vanaf ' + data.from + ' kon niet worden verstuurd aan ' + mail.to + ': \n\n' + e + '\n\n' + (mail.text ?? ''),
386
+ text: 'Een e-mail vanaf ' + data.from.email + ' kon niet worden verstuurd aan ' + mail.to + ': \n\n' + e + '\n\n' + (mail.text ?? ''),
392
387
  type: (data.type === 'transactional') ? 'broadcast' : 'transactional',
393
388
  });
394
389
  }
@@ -426,19 +421,17 @@ class EmailStatic {
426
421
  throw e;
427
422
  }
428
423
  }
429
- /**
430
- * @deprecated
431
- * Please use EmailBuilder.sendEmailTemplate
432
- */
433
- getInternalEmailFor(i18n) {
434
- // todo: use default email in platform settings
435
- return '"' + (STAMHOOFD.platformName ?? 'Stamhoofd') + ' " <hallo@' + (i18n.localizedDomains.defaultTransactionalEmail()) + '>';
436
- }
437
424
  getWebmasterFromEmail() {
438
- return '"' + (STAMHOOFD.platformName ?? 'Stamhoofd') + ' " <webmaster@' + (new backend_i18n_1.I18n('nl', structures_1.Country.Belgium).localizedDomains.defaultTransactionalEmail()) + '>';
425
+ return {
426
+ name: STAMHOOFD.platformName ?? 'Stamhoofd',
427
+ email: 'webmaster@' + (new backend_i18n_1.I18n('nl', structures_1.Country.Belgium).localizedDomains.defaultTransactionalEmail()),
428
+ };
439
429
  }
440
430
  getWebmasterToEmail() {
441
- return 'hallo@stamhoofd.be';
431
+ return {
432
+ name: 'Stamhoofd',
433
+ email: 'hallo@stamhoofd.be',
434
+ };
442
435
  }
443
436
  /**
444
437
  * Send an email to the webmaster
@@ -446,7 +439,7 @@ class EmailStatic {
446
439
  sendWebmaster(data) {
447
440
  const mail = Object.assign(data, {
448
441
  from: this.getWebmasterFromEmail(),
449
- to: this.getWebmasterToEmail(),
442
+ to: [this.getWebmasterToEmail()],
450
443
  });
451
444
  this.send(mail);
452
445
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/classes/Email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/classes/Email.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailMocker.d.ts","sourceRoot":"","sources":["../../src/classes/EmailMocker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGnD,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACxE,KAAK,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC;AAG1E,qBAAa,WAAW;IACpB,UAAU,EAAE,iBAAiB,EAAE,CAAM;IACrC,YAAY,EAAE,iBAAiB,EAAE,CAAM;IAEvC,aAAa,EAAE,cAAc,EAAE,CAAM;IACrC,IAAI,EAAE,eAAe,GAAG,WAAW,CAAmB;gBAE1C,IAAI,GAAE,eAAe,GAAG,WAA6B;IAIjE,MAAM,CAAC,aAAa,cAAoC;IACxD,MAAM,CAAC,SAAS,cAAgC;IAEhD,MAAM,CAAC,MAAM;IAiDb,MAAM,CAAC,QAAQ;IAMf,KAAK;IAOL,MAAM,CAAC,QAAQ,EAAE,cAAc;IAI/B,WAAW;IAIX,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,iBAAiB;IAIjB,cAAc;IAId,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAI/B,kBAAkB;CAGrB"}
1
+ {"version":3,"file":"EmailMocker.d.ts","sourceRoot":"","sources":["../../src/classes/EmailMocker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGnD,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACxE,KAAK,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC;AAE1E,qBAAa,WAAW;IACpB,UAAU,EAAE,iBAAiB,EAAE,CAAM;IACrC,YAAY,EAAE,iBAAiB,EAAE,CAAM;IAEvC,aAAa,EAAE,cAAc,EAAE,CAAM;IACrC,IAAI,EAAE,eAAe,GAAG,WAAW,CAAmB;gBAE1C,IAAI,GAAE,eAAe,GAAG,WAA6B;IAIjE,MAAM,CAAC,aAAa,cAAoC;IACxD,MAAM,CAAC,SAAS,cAAgC;IAEhD,MAAM,CAAC,MAAM;IAsDb,MAAM,CAAC,QAAQ;IAMf,KAAK;IAOL,MAAM,CAAC,QAAQ,EAAE,cAAc;IAI/B,WAAW;IAIX,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,iBAAiB;IAIjB,cAAc;IAId,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAI/B,kBAAkB;CAGrB"}
@@ -1,10 +1,31 @@
1
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.EmailMocker = void 0;
4
- const tslib_1 = require("tslib");
5
27
  const Email_1 = require("./Email");
6
28
  const test_utils_1 = require("@stamhoofd/test-utils");
7
- const sinon_1 = tslib_1.__importDefault(require("sinon"));
8
29
  class EmailMocker {
9
30
  sentEmails = [];
10
31
  failedEmails = [];
@@ -40,17 +61,21 @@ class EmailMocker {
40
61
  messageId: 'mocked-' + mocker.sentEmails.length,
41
62
  };
42
63
  };
43
- sinon_1.default.stub(Email_1.Email, 'setupIfNeeded').callsFake(function () {
44
- this.transporter = {
45
- sendMail: async (data) => {
46
- return handler(EmailMocker.broadcast, data);
47
- },
48
- };
49
- this.transactionalTransporter = {
50
- sendMail: async (data) => {
51
- return handler(EmailMocker.transactional, data);
52
- },
53
- };
64
+ test_utils_1.TestUtils.addBeforeAll(async () => {
65
+ // We load async here because this is a dev dependency (otherwise Node will reach this and complain, breaking the boot)
66
+ const sinon = await Promise.resolve().then(() => __importStar(require('sinon')));
67
+ sinon.stub(Email_1.Email, 'setupIfNeeded').callsFake(function () {
68
+ this.transporter = {
69
+ sendMail: async (data) => {
70
+ return handler(EmailMocker.broadcast, data);
71
+ },
72
+ };
73
+ this.transactionalTransporter = {
74
+ sendMail: async (data) => {
75
+ return handler(EmailMocker.transactional, data);
76
+ },
77
+ };
78
+ });
54
79
  });
55
80
  test_utils_1.TestUtils.addAfterEach(() => {
56
81
  EmailMocker.afterAll();
@@ -1 +1 @@
1
- {"version":3,"file":"EmailMocker.js","sourceRoot":"","sources":["../../src/classes/EmailMocker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmailMocker.js","sourceRoot":"","sources":["../../src/classes/EmailMocker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/email",
3
- "version": "2.78.3",
3
+ "version": "2.79.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "license": "UNLICENCED",
@@ -25,5 +25,5 @@
25
25
  "publishConfig": {
26
26
  "access": "public"
27
27
  },
28
- "gitHead": "272bfbb259109530326ec2fd8c83af5f69d6268b"
28
+ "gitHead": "1ba7d80ded3676ecdc63741f3e8972bd378b5ea6"
29
29
  }
@@ -18,9 +18,9 @@ export type EmailInterfaceRecipient = {
18
18
  };
19
19
 
20
20
  export type EmailInterfaceBase = {
21
- to: string | EmailInterfaceRecipient[];
22
- bcc?: string;
23
- replyTo?: string;
21
+ to: EmailInterfaceRecipient[];
22
+ bcc?: EmailInterfaceRecipient[];
23
+ replyTo?: EmailInterfaceRecipient;
24
24
  subject: string;
25
25
  text?: string;
26
26
  html?: string;
@@ -32,7 +32,7 @@ export type EmailInterfaceBase = {
32
32
  };
33
33
 
34
34
  export type EmailInterface = EmailInterfaceBase & {
35
- from: string;
35
+ from: EmailInterfaceRecipient;
36
36
  };
37
37
 
38
38
  /// An email builder is called until it returns undefined. This allows to reduce memory usage for an e-mail with multiple recipients
@@ -50,6 +50,29 @@ export type InternalEmailData = {
50
50
  headers?: Record<string, string>;
51
51
  };
52
52
 
53
+ function emailObjectToString(email: null | undefined): undefined;
54
+ function emailObjectToString(email: EmailInterfaceRecipient): string;
55
+ function emailObjectToString(email: EmailInterfaceRecipient | null | undefined): string | undefined {
56
+ if (!email) {
57
+ return;
58
+ }
59
+ if (email.name) {
60
+ const cleaned = Formatter.emailSenderName(email.name);
61
+ if (cleaned.length < 2) {
62
+ return email.email;
63
+ }
64
+ return '"' + email.name.replaceAll('"', '') + '" <' + email.email + '>';
65
+ }
66
+ return email.email;
67
+ }
68
+
69
+ function emailObjectsToString(emails: EmailInterfaceRecipient[]): string | undefined {
70
+ if (emails.length === 0) {
71
+ return;
72
+ }
73
+ return emails.map(emailObjectToString).join(', ');
74
+ }
75
+
53
76
  class EmailStatic {
54
77
  transporter: Mail;
55
78
  transactionalTransporter: Mail;
@@ -274,12 +297,13 @@ class EmailStatic {
274
297
  }
275
298
 
276
299
  private async doSend(data: EmailInterface) {
300
+ let recipients = data.to.filter(({ email }) => DataValidator.isEmailValid(email));
301
+
277
302
  // Check if this email is not marked as spam
278
303
  // Filter recipients if bounced or spam
279
- let recipients = this.parseTo(data.to);
280
304
  if (recipients.length === 0) {
281
305
  // Invalid string
282
- console.warn('Invalid e-mail string: ' + JSON.stringify(data.to) + '. E-mail skipped');
306
+ console.warn('No recipients for email');
283
307
 
284
308
  try {
285
309
  data.callback?.(
@@ -324,7 +348,9 @@ class EmailStatic {
324
348
  recipients = this.filterWhitelist(recipients, whitelist);
325
349
  }
326
350
 
327
- if (recipients.length === 0) {
351
+ const to = emailObjectsToString(recipients);
352
+
353
+ if (!to || recipients.length === 0) {
328
354
  // Invalid string
329
355
  try {
330
356
  data.callback?.(
@@ -341,23 +367,11 @@ class EmailStatic {
341
367
  return;
342
368
  }
343
369
 
344
- // Rebuild to
345
- const to = recipients.map((recipient) => {
346
- if (!recipient.name) {
347
- return recipient.email;
348
- }
349
- const cleanedName = Formatter.emailSenderName(recipient.name);
350
- if (cleanedName.length < 2) {
351
- return recipient.email;
352
- }
353
- return '"' + cleanedName + '" <' + recipient.email + '>';
354
- }).join(', ');
355
-
356
370
  // Clean bcc
357
371
  let bccRecipients: EmailInterfaceRecipient[] = [];
358
372
  if (data.bcc) {
359
373
  // Filter
360
- bccRecipients.push(...(await EmailAddress.filterSendTo(this.parseTo(data.bcc))));
374
+ bccRecipients.push(...(await EmailAddress.filterSendTo(data.bcc.filter(({ email }) => DataValidator.isEmailValid(email)))));
361
375
 
362
376
  // Filter by environment
363
377
  if (STAMHOOFD.environment !== 'production' || (STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS && STAMHOOFD.WHITELISTED_EMAIL_DESTINATIONS.length > 0)) {
@@ -365,28 +379,13 @@ class EmailStatic {
365
379
  bccRecipients = this.filterWhitelist(bccRecipients, whitelist);
366
380
  }
367
381
  }
368
-
369
- // Rebuild to
370
- const bcc = bccRecipients.length === 0
371
- ? undefined
372
- : bccRecipients.map((recipient) => {
373
- if (!recipient.name) {
374
- return recipient.email;
375
- }
376
- const cleanedName = Formatter.emailSenderName(recipient.name);
377
- if (cleanedName.length < 2) {
378
- return recipient.email;
379
- }
380
- return '"' + cleanedName + '" <' + recipient.email + '>';
381
- }).join(', ');
382
-
383
382
  this.setupIfNeeded();
384
383
 
385
384
  // send mail with defined transport object
386
385
  const mail: InternalEmailData = {
387
- from: data.from, // sender address
388
- bcc,
389
- replyTo: data.replyTo,
386
+ from: emailObjectToString(data.from), // sender address
387
+ bcc: emailObjectsToString(bccRecipients),
388
+ replyTo: data.replyTo ? emailObjectToString(data.replyTo) : undefined,
390
389
  to,
391
390
  subject: data.subject.substring(0, 1000), // Subject line
392
391
  text: data.text, // plain text body
@@ -411,15 +410,14 @@ class EmailStatic {
411
410
  }
412
411
  }
413
412
 
414
- const parsedFrom = this.parseEmailStr(data.from);
415
- if (parsedFrom.length !== 1) {
416
- throw new Error('Invalid from email ' + data.from);
413
+ if (!DataValidator.isEmailValid(data.from.email)) {
414
+ throw new Error('Invalid from email ' + data.from.email);
417
415
  }
418
416
 
419
417
  try {
420
418
  // Can we send from the transactional email server?
421
419
  if (STAMHOOFD.TRANSACTIONAL_WHITELIST !== undefined && data.type === 'transactional') {
422
- if (!this.matchWhitelist(parsedFrom[0], STAMHOOFD.TRANSACTIONAL_WHITELIST)) {
420
+ if (!this.matchWhitelist(data.from.email, STAMHOOFD.TRANSACTIONAL_WHITELIST)) {
423
421
  // Not supported
424
422
  data.type = 'broadcast';
425
423
  }
@@ -487,10 +485,10 @@ class EmailStatic {
487
485
 
488
486
  // Email address is not verified.
489
487
  if (STAMHOOFD.environment === 'production') {
490
- if (data.from !== this.getWebmasterFromEmail()) {
488
+ if (data.from.email !== this.getWebmasterFromEmail().email) {
491
489
  this.sendWebmaster({
492
490
  subject: 'E-mail kon niet worden verzonden',
493
- text: 'Een e-mail vanaf ' + data.from + ' kon niet worden verstuurd aan ' + mail.to + ': \n\n' + e + '\n\n' + (mail.text ?? ''),
491
+ text: 'Een e-mail vanaf ' + data.from.email + ' kon niet worden verstuurd aan ' + mail.to + ': \n\n' + e + '\n\n' + (mail.text ?? ''),
494
492
  type: (data.type === 'transactional') ? 'broadcast' : 'transactional',
495
493
  });
496
494
  }
@@ -533,21 +531,18 @@ class EmailStatic {
533
531
  }
534
532
  }
535
533
 
536
- /**
537
- * @deprecated
538
- * Please use EmailBuilder.sendEmailTemplate
539
- */
540
- getInternalEmailFor(i18n: I18n) {
541
- // todo: use default email in platform settings
542
- return '"' + (STAMHOOFD.platformName ?? 'Stamhoofd') + ' " <hallo@' + (i18n.localizedDomains.defaultTransactionalEmail()) + '>';
543
- }
544
-
545
534
  getWebmasterFromEmail() {
546
- return '"' + (STAMHOOFD.platformName ?? 'Stamhoofd') + ' " <webmaster@' + (new I18n('nl', Country.Belgium).localizedDomains.defaultTransactionalEmail()) + '>';
535
+ return {
536
+ name: STAMHOOFD.platformName ?? 'Stamhoofd',
537
+ email: 'webmaster@' + (new I18n('nl', Country.Belgium).localizedDomains.defaultTransactionalEmail()),
538
+ };
547
539
  }
548
540
 
549
541
  getWebmasterToEmail() {
550
- return 'hallo@stamhoofd.be';
542
+ return {
543
+ name: 'Stamhoofd',
544
+ email: 'hallo@stamhoofd.be',
545
+ };
551
546
  }
552
547
 
553
548
  /**
@@ -556,7 +551,7 @@ class EmailStatic {
556
551
  sendWebmaster(data: Omit<EmailInterfaceBase, 'to'>) {
557
552
  const mail = Object.assign(data, {
558
553
  from: this.getWebmasterFromEmail(),
559
- to: this.getWebmasterToEmail(),
554
+ to: [this.getWebmasterToEmail()],
560
555
  });
561
556
  this.send(mail);
562
557
  }
@@ -3,7 +3,6 @@ import { TestUtils } from '@stamhoofd/test-utils';
3
3
 
4
4
  type MockedCallback = (data: InternalEmailData) => Promise<void> | void;
5
5
  type MockedResponse = { error?: Error | null; callback?: MockedCallback };
6
- import sinon from 'sinon';
7
6
 
8
7
  export class EmailMocker {
9
8
  sentEmails: InternalEmailData[] = [];
@@ -49,18 +48,23 @@ export class EmailMocker {
49
48
  };
50
49
  };
51
50
 
52
- sinon.stub(Email, 'setupIfNeeded').callsFake(function (this: typeof Email) {
53
- this.transporter = {
54
- sendMail: async (data: InternalEmailData) => {
55
- return handler(EmailMocker.broadcast, data);
56
- },
57
- } as any;
58
-
59
- this.transactionalTransporter = {
60
- sendMail: async (data: InternalEmailData) => {
61
- return handler(EmailMocker.transactional, data);
62
- },
63
- } as any;
51
+ TestUtils.addBeforeAll(async () => {
52
+ // We load async here because this is a dev dependency (otherwise Node will reach this and complain, breaking the boot)
53
+ const sinon = await import('sinon');
54
+
55
+ sinon.stub(Email, 'setupIfNeeded').callsFake(function (this: typeof Email) {
56
+ this.transporter = {
57
+ sendMail: async (data: InternalEmailData) => {
58
+ return handler(EmailMocker.broadcast, data);
59
+ },
60
+ } as any;
61
+
62
+ this.transactionalTransporter = {
63
+ sendMail: async (data: InternalEmailData) => {
64
+ return handler(EmailMocker.transactional, data);
65
+ },
66
+ } as any;
67
+ });
64
68
  });
65
69
 
66
70
  TestUtils.addAfterEach(() => {