@nocobase/plugin-workflow-mailer 2.3.0-beta.13 → 2.3.0-beta.14
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/externalVersion.js +6 -6
- package/dist/node_modules/joi/package.json +1 -1
- package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +59 -0
- package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.js +790 -0
- package/dist/node_modules/nodemailer/dist/cjs/base64/index.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/cjs/base64/index.js +119 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +52 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/index.js +228 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +48 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +180 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.js +148 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +52 -0
- package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.js +165 -0
- package/dist/node_modules/nodemailer/dist/cjs/errors.d.ts +96 -0
- package/dist/node_modules/nodemailer/dist/cjs/errors.js +70 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +107 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.js +282 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/dist/cjs/fetch/index.js +384 -0
- package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +64 -0
- package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.js +99 -0
- package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +174 -0
- package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.js +613 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +237 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/index.js +415 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +97 -0
- package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.js +342 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +161 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +787 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.js +2103 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +333 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.js +1493 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.d.ts +5 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.js +32 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.d.ts +9 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.js +40 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.d.ts +10 -0
- package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.js +47 -0
- package/dist/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +124 -0
- package/dist/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
- package/dist/node_modules/nodemailer/dist/cjs/package-info.d.ts +3 -0
- package/dist/node_modules/nodemailer/dist/cjs/package-info.js +7 -0
- package/dist/node_modules/nodemailer/dist/cjs/package.json +3 -0
- package/dist/node_modules/nodemailer/dist/cjs/punycode/index.d.ts +73 -0
- package/dist/node_modules/nodemailer/{lib → dist/cjs}/punycode/index.js +62 -111
- package/dist/node_modules/nodemailer/dist/cjs/qp/index.d.ts +32 -0
- package/dist/node_modules/nodemailer/dist/cjs/qp/index.js +207 -0
- package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +69 -0
- package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.js +210 -0
- package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +112 -0
- package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.js +252 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/index.d.ts +260 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/index.js +680 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/objects.d.ts +23 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/objects.js +43 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/url.d.ts +21 -0
- package/dist/node_modules/nodemailer/dist/cjs/shared/url.js +255 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +15 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +108 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +47 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +189 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +416 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +1837 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +133 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +569 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.d.ts +62 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +257 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +156 -0
- package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +371 -0
- package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.js +146 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/index.d.ts +35 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/index.js +41 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/services.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/cjs/well-known/services.js +674 -0
- package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +201 -0
- package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.js +426 -0
- package/dist/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +59 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/addressparser/index.js +361 -131
- package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +31 -56
- package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +49 -78
- package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/message-parser.js +64 -42
- package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +36 -0
- package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +141 -0
- package/dist/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +52 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/sign.js +50 -46
- package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/errors.js +26 -18
- package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +107 -0
- package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.js +242 -0
- package/dist/node_modules/nodemailer/dist/esm/fetch/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/fetch/index.js +80 -147
- package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/json-transport/index.js +19 -39
- package/dist/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +174 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mail-composer/index.js +199 -265
- package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +128 -234
- package/dist/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +97 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/mail-message.js +62 -114
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +161 -0
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.js +738 -0
- package/dist/node_modules/nodemailer/dist/esm/mime-funcs/mime-types.d.ts +2 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-funcs/mime-types.js +29 -42
- package/dist/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +333 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/index.js +259 -372
- package/dist/node_modules/nodemailer/dist/esm/mime-node/last-newline.d.ts +5 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/last-newline.js +4 -10
- package/dist/node_modules/nodemailer/dist/esm/mime-node/le-unix.d.ts +9 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-unix.js +6 -11
- package/dist/node_modules/nodemailer/dist/esm/mime-node/le-windows.d.ts +10 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-windows.js +6 -13
- package/dist/node_modules/nodemailer/dist/esm/nodemailer.d.ts +124 -0
- package/dist/node_modules/nodemailer/dist/esm/nodemailer.js +166 -0
- package/dist/node_modules/nodemailer/dist/esm/package-info.d.ts +3 -0
- package/dist/node_modules/nodemailer/dist/esm/package-info.js +4 -0
- package/dist/node_modules/nodemailer/dist/esm/package.json +3 -0
- package/dist/node_modules/nodemailer/dist/esm/punycode/index.d.ts +73 -0
- package/dist/node_modules/nodemailer/dist/esm/punycode/index.js +405 -0
- package/dist/node_modules/nodemailer/dist/esm/qp/index.d.ts +32 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/qp/index.js +38 -67
- package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/sendmail-transport/index.js +51 -101
- package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +112 -0
- package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.js +212 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/index.d.ts +260 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/index.js +156 -272
- package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/shared/objects.js +13 -17
- package/dist/node_modules/nodemailer/dist/esm/shared/url.d.ts +21 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/url.js +214 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +15 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +103 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +47 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/http-proxy-client.js +49 -74
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-connection/index.js +574 -794
- package/dist/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +133 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/index.js +172 -284
- package/dist/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.d.ts +62 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/pool-resource.js +57 -97
- package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-transport/index.js +81 -179
- package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/stream-transport/index.js +36 -74
- package/dist/node_modules/nodemailer/dist/esm/well-known/index.d.ts +35 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/well-known/index.js +5 -16
- package/dist/node_modules/nodemailer/dist/esm/well-known/services.d.ts +2 -0
- package/dist/node_modules/nodemailer/dist/esm/well-known/services.js +671 -0
- package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +201 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/xoauth2/index.js +125 -187
- package/dist/node_modules/nodemailer/{lib → dist}/well-known/services.json +9 -2
- package/dist/node_modules/nodemailer/package.json +1 -1
- package/package.json +3 -3
- package/dist/node_modules/nodemailer/.gitattributes +0 -6
- package/dist/node_modules/nodemailer/.ncurc.js +0 -9
- package/dist/node_modules/nodemailer/.prettierignore +0 -8
- package/dist/node_modules/nodemailer/.prettierrc +0 -12
- package/dist/node_modules/nodemailer/.prettierrc.js +0 -10
- package/dist/node_modules/nodemailer/.release-please-config.json +0 -9
- package/dist/node_modules/nodemailer/eslint.config.js +0 -88
- package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
- package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -276
- package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -671
- package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
- package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -266
- package/dist/node_modules/nodemailer/lib/shared/url.js +0 -151
- package/dist/node_modules/nodemailer/lib/smtp-connection/data-stream.js +0 -105
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const { Transform } = require('stream');
|
|
4
|
-
|
|
5
|
-
class LastNewline extends Transform {
|
|
1
|
+
import { Transform } from 'node:stream';
|
|
2
|
+
export default class LastNewline extends Transform {
|
|
6
3
|
constructor() {
|
|
7
4
|
super();
|
|
8
5
|
this.lastByte = false;
|
|
9
6
|
}
|
|
10
|
-
|
|
7
|
+
/** @internal */
|
|
11
8
|
_transform(chunk, encoding, done) {
|
|
12
9
|
if (chunk.length) {
|
|
13
10
|
this.lastByte = chunk[chunk.length - 1];
|
|
14
11
|
}
|
|
15
|
-
|
|
16
12
|
this.push(chunk);
|
|
17
13
|
done();
|
|
18
14
|
}
|
|
19
|
-
|
|
15
|
+
/** @internal */
|
|
20
16
|
_flush(done) {
|
|
21
17
|
if (this.lastByte === 0x0a) {
|
|
22
18
|
return done();
|
|
@@ -29,5 +25,3 @@ class LastNewline extends Transform {
|
|
|
29
25
|
return done();
|
|
30
26
|
}
|
|
31
27
|
}
|
|
32
|
-
|
|
33
|
-
module.exports = LastNewline;
|
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const { Transform } = require('stream');
|
|
4
|
-
|
|
1
|
+
import { Transform } from 'node:stream';
|
|
5
2
|
/**
|
|
6
3
|
* Ensures that only <LF> is used for linebreaks
|
|
7
4
|
*
|
|
8
|
-
* @param
|
|
5
|
+
* @param options Stream options
|
|
9
6
|
*/
|
|
10
|
-
class LeUnix extends Transform {
|
|
7
|
+
export default class LeUnix extends Transform {
|
|
11
8
|
constructor(options) {
|
|
12
9
|
super(options);
|
|
13
10
|
}
|
|
14
|
-
|
|
15
11
|
/**
|
|
16
12
|
* Escapes dots
|
|
13
|
+
* @internal
|
|
17
14
|
*/
|
|
18
15
|
_transform(chunk, encoding, done) {
|
|
19
16
|
let buf;
|
|
20
17
|
let lastPos = 0;
|
|
21
|
-
|
|
22
18
|
for (let i = 0, len = chunk.length; i < len; i++) {
|
|
23
19
|
if (chunk[i] === 0x0d) {
|
|
24
20
|
// \r
|
|
@@ -30,11 +26,10 @@ class LeUnix extends Transform {
|
|
|
30
26
|
if (lastPos && lastPos < chunk.length) {
|
|
31
27
|
buf = chunk.slice(lastPos);
|
|
32
28
|
this.push(buf);
|
|
33
|
-
}
|
|
29
|
+
}
|
|
30
|
+
else if (!lastPos) {
|
|
34
31
|
this.push(chunk);
|
|
35
32
|
}
|
|
36
33
|
done();
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
|
|
40
|
-
module.exports = LeUnix;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Transform, type TransformOptions } from 'node:stream';
|
|
2
|
+
/**
|
|
3
|
+
* Ensures that only <CR><LF> sequences are used for linebreaks
|
|
4
|
+
*
|
|
5
|
+
* @param options Stream options
|
|
6
|
+
*/
|
|
7
|
+
export default class LeWindows extends Transform {
|
|
8
|
+
lastByte: number | false;
|
|
9
|
+
constructor(options?: TransformOptions);
|
|
10
|
+
}
|
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const { Transform } = require('stream');
|
|
4
|
-
|
|
1
|
+
import { Transform } from 'node:stream';
|
|
5
2
|
/**
|
|
6
3
|
* Ensures that only <CR><LF> sequences are used for linebreaks
|
|
7
4
|
*
|
|
8
|
-
* @param
|
|
5
|
+
* @param options Stream options
|
|
9
6
|
*/
|
|
10
|
-
class LeWindows extends Transform {
|
|
7
|
+
export default class LeWindows extends Transform {
|
|
11
8
|
constructor(options) {
|
|
12
9
|
super(options);
|
|
13
10
|
this.lastByte = false;
|
|
14
11
|
}
|
|
15
|
-
|
|
16
12
|
/**
|
|
17
13
|
* Escapes dots
|
|
14
|
+
* @internal
|
|
18
15
|
*/
|
|
19
16
|
_transform(chunk, encoding, done) {
|
|
20
17
|
let buf;
|
|
21
18
|
let lastPos = 0;
|
|
22
|
-
|
|
23
19
|
for (let i = 0, len = chunk.length; i < len; i++) {
|
|
24
20
|
if (chunk[i] === 0x0a) {
|
|
25
21
|
// \n
|
|
@@ -33,17 +29,14 @@ class LeWindows extends Transform {
|
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
if (lastPos && lastPos < chunk.length) {
|
|
38
33
|
buf = chunk.slice(lastPos);
|
|
39
34
|
this.push(buf);
|
|
40
|
-
}
|
|
35
|
+
}
|
|
36
|
+
else if (!lastPos) {
|
|
41
37
|
this.push(chunk);
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
this.lastByte = chunk[chunk.length - 1];
|
|
45
40
|
done();
|
|
46
41
|
}
|
|
47
42
|
}
|
|
48
|
-
|
|
49
|
-
module.exports = LeWindows;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import Mail from './mailer/index.js';
|
|
2
|
+
import type { MailDefaults, SentMessageInfo, Transport, TransportOptions } from './mailer/index.js';
|
|
3
|
+
import SMTPPool from './smtp-pool/index.js';
|
|
4
|
+
import type { SMTPPoolOptions, SMTPPoolSentMessageInfo } from './smtp-pool/index.js';
|
|
5
|
+
import SMTPTransport from './smtp-transport/index.js';
|
|
6
|
+
import type { SMTPTransportOptions, SMTPSentMessageInfo } from './smtp-transport/index.js';
|
|
7
|
+
import SendmailTransport from './sendmail-transport/index.js';
|
|
8
|
+
import type { SendmailTransportOptions, SendmailSentMessageInfo } from './sendmail-transport/index.js';
|
|
9
|
+
import StreamTransport from './stream-transport/index.js';
|
|
10
|
+
import type { StreamTransportOptions, StreamSentMessageInfo } from './stream-transport/index.js';
|
|
11
|
+
import JSONTransport from './json-transport/index.js';
|
|
12
|
+
import type { JSONTransportOptions, JSONSentMessageInfo, JSONSentMessageObjectInfo } from './json-transport/index.js';
|
|
13
|
+
import SESTransport from './ses-transport/index.js';
|
|
14
|
+
import type { SESTransportOptions, SESSentMessageInfo } from './ses-transport/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* Connection details of a service endpoint of an Ethereal test account
|
|
17
|
+
*/
|
|
18
|
+
export interface TestAccountService {
|
|
19
|
+
host: string;
|
|
20
|
+
port: number;
|
|
21
|
+
secure: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ethereal test account returned by createTestAccount()
|
|
25
|
+
*/
|
|
26
|
+
export interface TestAccount {
|
|
27
|
+
user: string;
|
|
28
|
+
pass: string;
|
|
29
|
+
smtp: TestAccountService;
|
|
30
|
+
imap: TestAccountService;
|
|
31
|
+
pop3: TestAccountService;
|
|
32
|
+
web: string;
|
|
33
|
+
/** true if the account can also receive external mail */
|
|
34
|
+
mxEnabled?: boolean | undefined;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Callback for createTestAccount()
|
|
39
|
+
*/
|
|
40
|
+
export type TestAccountCallback = (err: Error | null, account: TestAccount) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Configuration object of any of the bundled transports
|
|
43
|
+
*/
|
|
44
|
+
export type TransportConfig = SMTPTransportOptions | SMTPPoolOptions | SendmailTransportOptions | StreamTransportOptions | JSONTransportOptions | SESTransportOptions;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a transporter object for sending e-mails
|
|
47
|
+
*
|
|
48
|
+
* @param transporter Transport configuration object, a connection URL or a transport plugin instance
|
|
49
|
+
* @param defaults Default message fields that are merged into every message
|
|
50
|
+
* @returns Mail instance wrapping the transport
|
|
51
|
+
*/
|
|
52
|
+
export declare function createTransport(transporter: SMTPPool | (SMTPPoolOptions & {
|
|
53
|
+
pool: true;
|
|
54
|
+
}), defaults?: MailDefaults): Mail<SMTPPoolSentMessageInfo, SMTPPoolOptions>;
|
|
55
|
+
export declare function createTransport(transporter: SendmailTransport | (SendmailTransportOptions & {
|
|
56
|
+
sendmail: true | string;
|
|
57
|
+
}), defaults?: MailDefaults): Mail<SendmailSentMessageInfo, SendmailTransportOptions>;
|
|
58
|
+
export declare function createTransport(transporter: StreamTransport | (StreamTransportOptions & {
|
|
59
|
+
streamTransport: true;
|
|
60
|
+
}), defaults?: MailDefaults): Mail<StreamSentMessageInfo, StreamTransportOptions>;
|
|
61
|
+
export declare function createTransport(transporter: JSONTransportOptions & {
|
|
62
|
+
jsonTransport: true;
|
|
63
|
+
skipEncoding: true;
|
|
64
|
+
}, defaults?: MailDefaults): Mail<JSONSentMessageObjectInfo, JSONTransportOptions>;
|
|
65
|
+
export declare function createTransport(transporter: JSONTransport | (JSONTransportOptions & {
|
|
66
|
+
jsonTransport: true;
|
|
67
|
+
}), defaults?: MailDefaults): Mail<JSONSentMessageInfo, JSONTransportOptions>;
|
|
68
|
+
export declare function createTransport(transporter: SESTransport | (SESTransportOptions & {
|
|
69
|
+
SES: object;
|
|
70
|
+
}), defaults?: MailDefaults): Mail<SESSentMessageInfo, SESTransportOptions>;
|
|
71
|
+
export declare function createTransport(transporter: SMTPTransport, defaults?: MailDefaults): Mail<SMTPSentMessageInfo, SMTPTransportOptions>;
|
|
72
|
+
export declare function createTransport<T = SentMessageInfo, D extends TransportOptions = TransportOptions>(transporter: Transport<T, D>, defaults?: MailDefaults): Mail<T, D>;
|
|
73
|
+
export declare function createTransport(transporter?: SMTPTransportOptions | string, defaults?: MailDefaults): Mail<SMTPSentMessageInfo, SMTPTransportOptions>;
|
|
74
|
+
export declare function createTransport(transporter?: TransportConfig | Transport<any, any> | string, defaults?: MailDefaults): Mail<any, any>;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a test account from the Ethereal service (https://ethereal.email)
|
|
77
|
+
*
|
|
78
|
+
* @param callback Callback function to run with the account object
|
|
79
|
+
*/
|
|
80
|
+
export declare function createTestAccount(callback: TestAccountCallback): void;
|
|
81
|
+
/**
|
|
82
|
+
* Creates a test account from the Ethereal service (https://ethereal.email)
|
|
83
|
+
*
|
|
84
|
+
* @param apiUrl API endpoint, defaults to https://api.nodemailer.com
|
|
85
|
+
* @param callback Callback function to run with the account object
|
|
86
|
+
*/
|
|
87
|
+
export declare function createTestAccount(apiUrl: string | false | null | undefined, callback: TestAccountCallback): void;
|
|
88
|
+
/**
|
|
89
|
+
* Creates a test account from the Ethereal service (https://ethereal.email)
|
|
90
|
+
*
|
|
91
|
+
* @param [apiUrl] API endpoint, defaults to https://api.nodemailer.com
|
|
92
|
+
* @returns Promise that resolves with the account object
|
|
93
|
+
*/
|
|
94
|
+
export declare function createTestAccount(apiUrl?: string | false | null): Promise<TestAccount>;
|
|
95
|
+
/**
|
|
96
|
+
* Resolves the Ethereal web URL for a message sent through an Ethereal test account
|
|
97
|
+
*
|
|
98
|
+
* @param info Result object of sendMail()
|
|
99
|
+
* @returns URL of the message in the Ethereal web interface, or false if the response does not carry one
|
|
100
|
+
*/
|
|
101
|
+
export declare function getTestMessageUrl(info?: {
|
|
102
|
+
response?: string | Buffer | null | undefined;
|
|
103
|
+
} | false | null): string | false;
|
|
104
|
+
declare const nodemailer: {
|
|
105
|
+
createTransport: typeof createTransport;
|
|
106
|
+
createTestAccount: typeof createTestAccount;
|
|
107
|
+
getTestMessageUrl: typeof getTestMessageUrl;
|
|
108
|
+
};
|
|
109
|
+
export default nodemailer;
|
|
110
|
+
export type { Mail, MailDefaults, SentMessageInfo, Transport, TransportOptions };
|
|
111
|
+
export type { SendMailOptions, Transporter } from './mailer/index.js';
|
|
112
|
+
export type { NodemailerError, ErrorCode } from './errors.js';
|
|
113
|
+
export type { MailMessage, MailMessageData, PluginFunction, VerifyCallback } from './mailer/index.js';
|
|
114
|
+
export type { MailComposerOptions, MailComposerAttachment as Attachment, MailComposerAlternative as AttachmentLike, MailComposerIcalEvent as IcalAttachment, MailComposerListHeaders as ListHeaders } from './mail-composer/index.js';
|
|
115
|
+
export type { MimeNodeAddress as Address, MimeNodeHeaders as Headers } from './mime-node/index.js';
|
|
116
|
+
export type { SMTPConnectionOptions, SMTPConnectionAuth, SMTPEnvelope, SMTPEnvelopeDsn } from './smtp-connection/index.js';
|
|
117
|
+
export type { DKIMOptions } from './dkim/index.js';
|
|
118
|
+
export type { XOAuth2Options, XOAuth2Token } from './xoauth2/index.js';
|
|
119
|
+
export type { SMTPTransportOptions, SMTPSentMessageInfo };
|
|
120
|
+
export type { SMTPPoolOptions, SMTPPoolSentMessageInfo };
|
|
121
|
+
export type { SendmailTransportOptions, SendmailSentMessageInfo };
|
|
122
|
+
export type { StreamTransportOptions, StreamSentMessageInfo };
|
|
123
|
+
export type { JSONTransportOptions, JSONSentMessageInfo, JSONSentMessageObjectInfo };
|
|
124
|
+
export type { SESTransportOptions, SESSentMessageInfo };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import Mail from './mailer/index.js';
|
|
2
|
+
import * as shared from './shared/index.js';
|
|
3
|
+
import SMTPPool from './smtp-pool/index.js';
|
|
4
|
+
import SMTPTransport from './smtp-transport/index.js';
|
|
5
|
+
import SendmailTransport from './sendmail-transport/index.js';
|
|
6
|
+
import StreamTransport from './stream-transport/index.js';
|
|
7
|
+
import JSONTransport from './json-transport/index.js';
|
|
8
|
+
import SESTransport from './ses-transport/index.js';
|
|
9
|
+
import * as errors from './errors.js';
|
|
10
|
+
import nmfetch from './fetch/index.js';
|
|
11
|
+
import * as packageData from './package-info.js';
|
|
12
|
+
const ETHEREAL_API = (process.env.ETHEREAL_API || 'https://api.nodemailer.com').replace(/\/+$/, '');
|
|
13
|
+
const ETHEREAL_WEB = (process.env.ETHEREAL_WEB || 'https://ethereal.email').replace(/\/+$/, '');
|
|
14
|
+
const ETHEREAL_API_KEY = (process.env.ETHEREAL_API_KEY || '').replace(/\s*/g, '') || null;
|
|
15
|
+
const ETHEREAL_CACHE = ['true', 'yes', 'y', '1'].includes((process.env.ETHEREAL_CACHE || 'yes').toString().trim().toLowerCase());
|
|
16
|
+
let testAccount = false;
|
|
17
|
+
export function createTransport(transporter, defaults) {
|
|
18
|
+
let options;
|
|
19
|
+
if (
|
|
20
|
+
// provided transporter is a configuration object, not transporter plugin
|
|
21
|
+
(typeof transporter === 'object' && typeof transporter.send !== 'function') ||
|
|
22
|
+
// provided transporter looks like a connection url
|
|
23
|
+
(typeof transporter === 'string' && /^(smtps?|direct):/i.test(transporter))) {
|
|
24
|
+
const urlConfig = typeof transporter === 'string' ? transporter : transporter.url;
|
|
25
|
+
if (urlConfig) {
|
|
26
|
+
// parse a configuration URL into configuration options. The other keys of a
|
|
27
|
+
// configuration object apply where the url does not set them, merged the same
|
|
28
|
+
// way the SMTP transports merge their own url option
|
|
29
|
+
const parsed = shared.parseConnectionUrl(urlConfig);
|
|
30
|
+
options = (typeof transporter === 'object'
|
|
31
|
+
? shared.assign(false, shared.copyOwnKeys({}, transporter, key => key === 'url'), parsed)
|
|
32
|
+
: parsed);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
options = transporter;
|
|
36
|
+
}
|
|
37
|
+
if (options.pool) {
|
|
38
|
+
transporter = new SMTPPool(options);
|
|
39
|
+
}
|
|
40
|
+
else if (options.sendmail) {
|
|
41
|
+
transporter = new SendmailTransport(options);
|
|
42
|
+
}
|
|
43
|
+
else if (options.streamTransport) {
|
|
44
|
+
transporter = new StreamTransport(options);
|
|
45
|
+
}
|
|
46
|
+
else if (options.jsonTransport) {
|
|
47
|
+
transporter = new JSONTransport(options);
|
|
48
|
+
}
|
|
49
|
+
else if (options.SES) {
|
|
50
|
+
const ses = options.SES;
|
|
51
|
+
if (ses.ses && ses.aws) {
|
|
52
|
+
const error = new Error('Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/');
|
|
53
|
+
error.code = errors.ECONFIG;
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
transporter = new SESTransport(options);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
transporter = new SMTPTransport(options);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return new Mail(transporter, options, defaults);
|
|
63
|
+
}
|
|
64
|
+
export function createTestAccount(apiUrl, callback) {
|
|
65
|
+
let promise;
|
|
66
|
+
if (!callback && typeof apiUrl === 'function') {
|
|
67
|
+
callback = apiUrl;
|
|
68
|
+
apiUrl = false;
|
|
69
|
+
}
|
|
70
|
+
if (!callback) {
|
|
71
|
+
promise = new Promise((resolve, reject) => {
|
|
72
|
+
callback = shared.callbackPromise(resolve, reject);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const done = callback;
|
|
76
|
+
if (ETHEREAL_CACHE && testAccount) {
|
|
77
|
+
setImmediate(() => done(null, testAccount));
|
|
78
|
+
return promise;
|
|
79
|
+
}
|
|
80
|
+
apiUrl = apiUrl || ETHEREAL_API;
|
|
81
|
+
const chunks = [];
|
|
82
|
+
let chunklen = 0;
|
|
83
|
+
const requestHeaders = {};
|
|
84
|
+
const requestBody = {
|
|
85
|
+
requestor: packageData.name,
|
|
86
|
+
version: packageData.version
|
|
87
|
+
};
|
|
88
|
+
if (ETHEREAL_API_KEY) {
|
|
89
|
+
requestHeaders.Authorization = 'Bearer ' + ETHEREAL_API_KEY;
|
|
90
|
+
}
|
|
91
|
+
const fetchOptions = {
|
|
92
|
+
contentType: 'application/json',
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: requestHeaders,
|
|
95
|
+
body: Buffer.from(JSON.stringify(requestBody))
|
|
96
|
+
};
|
|
97
|
+
// Credential-bearing request to the Ethereal API. src/fetch already
|
|
98
|
+
// validates certs by default; pin rejectUnauthorized:true here so this
|
|
99
|
+
// call stays strict regardless of any future default change and is never
|
|
100
|
+
// relaxed for a real-cert endpoint.
|
|
101
|
+
if (/^https:/i.test(apiUrl)) {
|
|
102
|
+
fetchOptions.tls = { rejectUnauthorized: true };
|
|
103
|
+
}
|
|
104
|
+
const req = nmfetch(apiUrl + '/user', fetchOptions);
|
|
105
|
+
req.on('readable', () => {
|
|
106
|
+
let chunk;
|
|
107
|
+
while ((chunk = req.read()) !== null) {
|
|
108
|
+
chunks.push(chunk);
|
|
109
|
+
chunklen += chunk.length;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
req.once('error', err => done(err));
|
|
113
|
+
req.once('end', () => {
|
|
114
|
+
const res = Buffer.concat(chunks, chunklen);
|
|
115
|
+
let data;
|
|
116
|
+
try {
|
|
117
|
+
data = JSON.parse(res.toString());
|
|
118
|
+
}
|
|
119
|
+
catch (E) {
|
|
120
|
+
return done(E);
|
|
121
|
+
}
|
|
122
|
+
if (data.status !== 'success' || data.error) {
|
|
123
|
+
return done(new Error(data.error || 'Request failed'));
|
|
124
|
+
}
|
|
125
|
+
delete data.status;
|
|
126
|
+
testAccount = data;
|
|
127
|
+
done(null, testAccount);
|
|
128
|
+
});
|
|
129
|
+
return promise;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Resolves the Ethereal web URL for a message sent through an Ethereal test account
|
|
133
|
+
*
|
|
134
|
+
* @param info Result object of sendMail()
|
|
135
|
+
* @returns URL of the message in the Ethereal web interface, or false if the response does not carry one
|
|
136
|
+
*/
|
|
137
|
+
export function getTestMessageUrl(info) {
|
|
138
|
+
if (!info || !info.response) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const infoProps = new Map();
|
|
142
|
+
// Extract the trailing "[...]" part of the response (no "]" allowed inside)
|
|
143
|
+
// with linear string scanning; the equivalent regex /\[([^\]]+)\]$/ was
|
|
144
|
+
// flagged for polynomial backtracking on adversarial server responses
|
|
145
|
+
const response = info.response.toString();
|
|
146
|
+
if (response.length > 2 && response.charAt(response.length - 1) === ']') {
|
|
147
|
+
const open = response.indexOf('[', response.lastIndexOf(']', response.length - 2) + 1);
|
|
148
|
+
if (open >= 0 && open < response.length - 2) {
|
|
149
|
+
const props = response.substring(open + 1, response.length - 1);
|
|
150
|
+
props.replace(/\b([A-Z0-9]+)=([^\s]+)/g, (m, key, value) => {
|
|
151
|
+
infoProps.set(key, value);
|
|
152
|
+
return m;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (infoProps.has('STATUS') && infoProps.has('MSGID')) {
|
|
157
|
+
return ((testAccount && testAccount.web) || ETHEREAL_WEB) + '/message/' + infoProps.get('MSGID');
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
const nodemailer = {
|
|
162
|
+
createTransport,
|
|
163
|
+
createTestAccount,
|
|
164
|
+
getTestMessageUrl
|
|
165
|
+
};
|
|
166
|
+
export default nodemailer;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates an array containing the numeric code points of each Unicode
|
|
3
|
+
* character in the string. While JavaScript uses UCS-2 internally,
|
|
4
|
+
* this function will convert a pair of surrogate halves (each of which
|
|
5
|
+
* UCS-2 exposes as separate characters) into a single code point,
|
|
6
|
+
* matching UTF-16.
|
|
7
|
+
* @see `punycode.ucs2.encode`
|
|
8
|
+
* @see <https://mathiasbynens.be/notes/javascript-encoding>
|
|
9
|
+
* @memberOf punycode.ucs2
|
|
10
|
+
* @name decode
|
|
11
|
+
* @param string The Unicode input string (UCS-2).
|
|
12
|
+
* @returns The new array of code points.
|
|
13
|
+
*/
|
|
14
|
+
declare function ucs2decode(string: string): number[];
|
|
15
|
+
/**
|
|
16
|
+
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
|
|
17
|
+
* symbols.
|
|
18
|
+
* @memberOf punycode
|
|
19
|
+
* @param input The Punycode string of ASCII-only symbols.
|
|
20
|
+
* @returns The resulting string of Unicode symbols.
|
|
21
|
+
*/
|
|
22
|
+
declare const decode: (input: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Converts a string of Unicode symbols (e.g. a domain name label) to a
|
|
25
|
+
* Punycode string of ASCII-only symbols.
|
|
26
|
+
* @memberOf punycode
|
|
27
|
+
* @param input The string of Unicode symbols.
|
|
28
|
+
* @returns The resulting Punycode string of ASCII-only symbols.
|
|
29
|
+
*/
|
|
30
|
+
declare const encode: (input: string) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Converts a Punycode string representing a domain name or an email address
|
|
33
|
+
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
|
|
34
|
+
* it doesn't matter if you call it on a string that has already been
|
|
35
|
+
* converted to Unicode.
|
|
36
|
+
* @memberOf punycode
|
|
37
|
+
* @param input The Punycoded domain name or email address to
|
|
38
|
+
* convert to Unicode.
|
|
39
|
+
* @returns The Unicode representation of the given Punycode
|
|
40
|
+
* string.
|
|
41
|
+
*/
|
|
42
|
+
declare const toUnicode: (input: string) => string;
|
|
43
|
+
/**
|
|
44
|
+
* Converts a Unicode string representing a domain name or an email address to
|
|
45
|
+
* Punycode. Only the non-ASCII parts of the domain name will be converted,
|
|
46
|
+
* i.e. it doesn't matter if you call it with a domain that's already in
|
|
47
|
+
* ASCII.
|
|
48
|
+
* @memberOf punycode
|
|
49
|
+
* @param input The domain name or email address to convert, as a
|
|
50
|
+
* Unicode string.
|
|
51
|
+
* @returns The Punycode representation of the given domain name or
|
|
52
|
+
* email address.
|
|
53
|
+
*/
|
|
54
|
+
declare const toASCII: (input: string) => string;
|
|
55
|
+
/** Define the public API */
|
|
56
|
+
/**
|
|
57
|
+
* A string representing the current Punycode.js version number.
|
|
58
|
+
* @memberOf punycode
|
|
59
|
+
* @type String
|
|
60
|
+
*/
|
|
61
|
+
export declare const version = "2.3.1";
|
|
62
|
+
/**
|
|
63
|
+
* An object of methods to convert from JavaScript's internal character
|
|
64
|
+
* representation (UCS-2) to Unicode code points, and back.
|
|
65
|
+
* @see <https://mathiasbynens.be/notes/javascript-encoding>
|
|
66
|
+
* @memberOf punycode
|
|
67
|
+
* @type Object
|
|
68
|
+
*/
|
|
69
|
+
export declare const ucs2: {
|
|
70
|
+
decode: typeof ucs2decode;
|
|
71
|
+
encode: (codePoints: number[]) => string;
|
|
72
|
+
};
|
|
73
|
+
export { decode, encode, toASCII, toUnicode };
|