@nocobase/plugin-workflow-mailer 2.4.0-alpha.1 → 2.4.0-alpha.10
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/dist/joi-browser.min.js +1 -1
- package/dist/node_modules/joi/lib/index.js +1 -1
- package/dist/node_modules/joi/lib/messages.js +35 -6
- package/dist/node_modules/joi/lib/types/keys.js +18 -1
- package/dist/node_modules/joi/lib/types/link.js +18 -2
- package/dist/node_modules/joi/lib/types/string.js +2 -2
- 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 +63 -112
- 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/dist/esm/addressparser/index.js +786 -0
- package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +39 -68
- package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +62 -92
- package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
- package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.js +176 -0
- 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/dist/esm/dkim/sign.js +125 -0
- package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
- package/dist/node_modules/nodemailer/dist/esm/errors.js +67 -0
- 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/dist/esm/fetch/index.js +344 -0
- package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
- package/dist/node_modules/nodemailer/dist/esm/json-transport/index.js +62 -0
- 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 +283 -275
- package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
- package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +151 -205
- 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 +111 -125
- 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 +43 -49
- 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 +576 -437
- 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 +7 -15
- 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 -16
- 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 +59 -77
- package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
- package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.js +170 -0
- 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/dist/esm/shared/index.js +631 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
- package/dist/node_modules/nodemailer/dist/esm/shared/objects.js +38 -0
- 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/dist/esm/smtp-connection/http-proxy-client.js +149 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.js +1797 -0
- 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 +195 -314
- 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 +70 -107
- package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
- package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.js +331 -0
- package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
- package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.js +106 -0
- 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 +12 -23
- 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/dist/esm/xoauth2/index.js +386 -0
- package/dist/node_modules/nodemailer/dist/well-known/services.json +640 -0
- package/dist/node_modules/nodemailer/package.json +1 -1
- package/package.json +4 -4
- package/dist/node_modules/nodemailer/.gitattributes +0 -6
- package/dist/node_modules/nodemailer/.ncurc.js +0 -7
- package/dist/node_modules/nodemailer/.prettierrc.js +0 -8
- package/dist/node_modules/nodemailer/lib/addressparser/index.js +0 -313
- package/dist/node_modules/nodemailer/lib/dkim/message-parser.js +0 -155
- package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
- package/dist/node_modules/nodemailer/lib/dkim/sign.js +0 -117
- package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -281
- package/dist/node_modules/nodemailer/lib/fetch/index.js +0 -274
- package/dist/node_modules/nodemailer/lib/json-transport/index.js +0 -82
- package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -625
- package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
- package/dist/node_modules/nodemailer/lib/sendmail-transport/index.js +0 -210
- package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -349
- package/dist/node_modules/nodemailer/lib/shared/index.js +0 -688
- package/dist/node_modules/nodemailer/lib/smtp-connection/data-stream.js +0 -108
- package/dist/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +0 -143
- package/dist/node_modules/nodemailer/lib/smtp-connection/index.js +0 -1825
- package/dist/node_modules/nodemailer/lib/smtp-transport/index.js +0 -416
- package/dist/node_modules/nodemailer/lib/stream-transport/index.js +0 -135
- package/dist/node_modules/nodemailer/lib/well-known/services.json +0 -343
- package/dist/node_modules/nodemailer/lib/xoauth2/index.js +0 -376
|
@@ -1,94 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import * as shared from '../shared/index.js';
|
|
3
|
+
import * as mimeTypes from '../mime-funcs/mime-types.js';
|
|
4
|
+
import MailComposer from '../mail-composer/index.js';
|
|
5
|
+
import DKIM from '../dkim/index.js';
|
|
6
|
+
import httpProxyClient from '../smtp-connection/http-proxy-client.js';
|
|
7
|
+
import * as errors from '../errors.js';
|
|
8
|
+
import util from 'node:util';
|
|
9
|
+
import * as urllib from '../shared/url.js';
|
|
10
|
+
import * as packageData from '../package-info.js';
|
|
11
|
+
import MailMessage from './mail-message.js';
|
|
12
|
+
import net from 'node:net';
|
|
13
|
+
import dns from 'node:dns';
|
|
14
|
+
import crypto from 'node:crypto';
|
|
15
|
+
/**
|
|
16
|
+
* Recipients allowed on one message unless the caller sets its own maxRecipients. A backstop
|
|
17
|
+
* against a runaway or hostile recipient list rather than a delivery policy: RFC 5321 only
|
|
18
|
+
* asks a server to accept 100, so a real send is bounded far below this.
|
|
19
|
+
*/
|
|
20
|
+
const DEFAULT_MAX_RECIPIENTS = 100000;
|
|
17
21
|
/**
|
|
18
22
|
* Creates an object for exposing the Mail API
|
|
19
23
|
*
|
|
20
24
|
* @constructor
|
|
21
|
-
* @param
|
|
25
|
+
* @param transporter Transport object instance to pass the mails to
|
|
22
26
|
*/
|
|
23
27
|
class Mail extends EventEmitter {
|
|
24
28
|
constructor(transporter, options, defaults) {
|
|
25
29
|
super();
|
|
26
|
-
|
|
27
30
|
this.options = options || {};
|
|
28
31
|
this._defaults = defaults || {};
|
|
29
|
-
|
|
30
32
|
this._defaultPlugins = {
|
|
31
33
|
compile: [(...args) => this._convertDataImages(...args)],
|
|
32
34
|
stream: []
|
|
33
35
|
};
|
|
34
|
-
|
|
35
36
|
this._userPlugins = {
|
|
36
37
|
compile: [],
|
|
37
38
|
stream: []
|
|
38
39
|
};
|
|
39
|
-
|
|
40
40
|
this.meta = new Map();
|
|
41
|
-
|
|
42
41
|
this.dkim = this.options.dkim ? new DKIM(this.options.dkim) : false;
|
|
43
|
-
|
|
44
42
|
this.transporter = transporter;
|
|
45
43
|
this.transporter.mailer = this;
|
|
46
|
-
|
|
47
44
|
this.logger = shared.getLogger(this.options, {
|
|
48
45
|
component: this.options.component || 'mail'
|
|
49
46
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
tnx: 'create'
|
|
54
|
-
},
|
|
55
|
-
'Creating transport: %s',
|
|
56
|
-
this.getVersionString()
|
|
57
|
-
);
|
|
58
|
-
|
|
47
|
+
this.logger.debug({
|
|
48
|
+
tnx: 'create'
|
|
49
|
+
}, 'Creating transport: %s', this.getVersionString());
|
|
59
50
|
// setup emit handlers for the transporter
|
|
60
51
|
if (typeof this.transporter.on === 'function') {
|
|
61
52
|
// deprecated log interface
|
|
62
53
|
this.transporter.on('log', log => {
|
|
63
|
-
this.logger.debug(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
},
|
|
67
|
-
'%s: %s',
|
|
68
|
-
log.type,
|
|
69
|
-
log.message
|
|
70
|
-
);
|
|
54
|
+
this.logger.debug({
|
|
55
|
+
tnx: 'transport'
|
|
56
|
+
}, '%s: %s', log.type, log.message);
|
|
71
57
|
});
|
|
72
|
-
|
|
73
58
|
// transporter errors
|
|
74
59
|
this.transporter.on('error', err => {
|
|
75
|
-
this.logger.error(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
80
|
-
'Transport Error: %s',
|
|
81
|
-
err.message
|
|
82
|
-
);
|
|
60
|
+
this.logger.error({
|
|
61
|
+
err,
|
|
62
|
+
tnx: 'transport'
|
|
63
|
+
}, 'Transport Error: %s', err.message);
|
|
83
64
|
this.emit('error', err);
|
|
84
65
|
});
|
|
85
|
-
|
|
86
66
|
// indicates if the sender has became idle
|
|
87
67
|
this.transporter.on('idle', (...args) => {
|
|
88
68
|
this.emit('idle', ...args);
|
|
89
69
|
});
|
|
70
|
+
// indicates if the sender has became idle and all connections are terminated
|
|
71
|
+
this.transporter.on('clear', (...args) => {
|
|
72
|
+
this.emit('clear', ...args);
|
|
73
|
+
});
|
|
90
74
|
}
|
|
91
|
-
|
|
92
75
|
/**
|
|
93
76
|
* Optional methods passed to the underlying transport object
|
|
94
77
|
*/
|
|
@@ -100,186 +83,155 @@ class Mail extends EventEmitter {
|
|
|
100
83
|
this.getSocket = false;
|
|
101
84
|
}
|
|
102
85
|
return this.transporter[method](...args);
|
|
103
|
-
} else {
|
|
104
|
-
this.logger.warn(
|
|
105
|
-
{
|
|
106
|
-
tnx: 'transport',
|
|
107
|
-
methodName: method
|
|
108
|
-
},
|
|
109
|
-
'Non existing method %s called for transport',
|
|
110
|
-
method
|
|
111
|
-
);
|
|
112
|
-
return false;
|
|
113
86
|
}
|
|
87
|
+
this.logger.warn({
|
|
88
|
+
tnx: 'transport',
|
|
89
|
+
methodName: method
|
|
90
|
+
}, 'Non existing method %s called for transport', method);
|
|
91
|
+
return false;
|
|
114
92
|
};
|
|
115
93
|
});
|
|
116
|
-
|
|
117
94
|
// setup proxy handling
|
|
118
95
|
if (this.options.proxy && typeof this.options.proxy === 'string') {
|
|
119
96
|
this.setupProxy(this.options.proxy);
|
|
120
97
|
}
|
|
121
98
|
}
|
|
122
|
-
|
|
123
99
|
use(step, plugin) {
|
|
124
100
|
step = (step || '').toString();
|
|
125
101
|
if (!this._userPlugins.hasOwnProperty(step)) {
|
|
126
102
|
this._userPlugins[step] = [plugin];
|
|
127
|
-
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
128
105
|
this._userPlugins[step].push(plugin);
|
|
129
106
|
}
|
|
130
|
-
|
|
131
107
|
return this;
|
|
132
108
|
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Sends an email using the preselected transport object
|
|
136
|
-
*
|
|
137
|
-
* @param {Object} data E-data description
|
|
138
|
-
* @param {Function?} callback Callback to run once the sending succeeded or failed
|
|
139
|
-
*/
|
|
140
109
|
sendMail(data, callback = null) {
|
|
141
110
|
let promise;
|
|
142
|
-
|
|
143
111
|
if (!callback) {
|
|
144
112
|
promise = new Promise((resolve, reject) => {
|
|
145
113
|
callback = shared.callbackPromise(resolve, reject);
|
|
146
114
|
});
|
|
147
115
|
}
|
|
148
|
-
|
|
116
|
+
const done = callback;
|
|
149
117
|
if (typeof this.getSocket === 'function') {
|
|
150
118
|
this.transporter.getSocket = this.getSocket;
|
|
151
119
|
this.getSocket = false;
|
|
152
120
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
version: this.transporter.version,
|
|
161
|
-
action: 'send'
|
|
162
|
-
},
|
|
163
|
-
'Sending mail using %s/%s',
|
|
164
|
-
this.transporter.name,
|
|
165
|
-
this.transporter.version
|
|
166
|
-
);
|
|
167
|
-
|
|
121
|
+
const mail = new MailMessage(this, data);
|
|
122
|
+
this.logger.debug({
|
|
123
|
+
tnx: 'transport',
|
|
124
|
+
name: this.transporter.name,
|
|
125
|
+
version: this.transporter.version,
|
|
126
|
+
action: 'send'
|
|
127
|
+
}, 'Sending mail using %s/%s', this.transporter.name, this.transporter.version);
|
|
168
128
|
this._processPlugins('compile', mail, err => {
|
|
169
129
|
if (err) {
|
|
170
|
-
this.logger.error(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
130
|
+
this.logger.error({
|
|
131
|
+
err,
|
|
132
|
+
tnx: 'plugin',
|
|
133
|
+
action: 'compile'
|
|
134
|
+
}, 'PluginCompile Error: %s', err.message);
|
|
135
|
+
return done(err);
|
|
136
|
+
}
|
|
137
|
+
let recipientCount;
|
|
138
|
+
try {
|
|
139
|
+
mail.message = new MailComposer(mail.data).compile();
|
|
140
|
+
mail.setMailerHeader();
|
|
141
|
+
mail.setPriorityHeaders();
|
|
142
|
+
mail.setListHeaders();
|
|
143
|
+
recipientCount = mail.message.getEnvelope().to.length;
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
// message data can throw while it is compiled, the error belongs to the callback
|
|
147
|
+
this.logger.error({
|
|
148
|
+
err,
|
|
149
|
+
tnx: 'transport',
|
|
150
|
+
action: 'send'
|
|
151
|
+
}, 'Compile Error: %s', err.message);
|
|
152
|
+
return done(err);
|
|
153
|
+
}
|
|
154
|
+
const maxRecipients = mail.data.maxRecipients === undefined ? DEFAULT_MAX_RECIPIENTS : mail.data.maxRecipients;
|
|
155
|
+
if (maxRecipients && recipientCount > maxRecipients) {
|
|
156
|
+
const err = new Error(`Message has ${recipientCount} recipients, which is over the ${maxRecipients} allowed by maxRecipients`);
|
|
157
|
+
err.code = errors.EMAXRECIPIENTS;
|
|
158
|
+
this.logger.error({
|
|
159
|
+
err,
|
|
160
|
+
tnx: 'transport',
|
|
161
|
+
action: 'send'
|
|
162
|
+
}, 'Send Error: %s', err.message);
|
|
163
|
+
return done(err);
|
|
180
164
|
}
|
|
181
|
-
|
|
182
|
-
mail.message = new MailComposer(mail.data).compile();
|
|
183
|
-
|
|
184
|
-
mail.setMailerHeader();
|
|
185
|
-
mail.setPriorityHeaders();
|
|
186
|
-
mail.setListHeaders();
|
|
187
|
-
|
|
188
165
|
this._processPlugins('stream', mail, err => {
|
|
189
166
|
if (err) {
|
|
190
|
-
this.logger.error(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
'PluginStream Error: %s',
|
|
197
|
-
err.message
|
|
198
|
-
);
|
|
199
|
-
return callback(err);
|
|
167
|
+
this.logger.error({
|
|
168
|
+
err,
|
|
169
|
+
tnx: 'plugin',
|
|
170
|
+
action: 'stream'
|
|
171
|
+
}, 'PluginStream Error: %s', err.message);
|
|
172
|
+
return done(err);
|
|
200
173
|
}
|
|
201
|
-
|
|
202
174
|
if (mail.data.dkim || this.dkim) {
|
|
203
175
|
mail.message.processFunc(input => {
|
|
204
|
-
|
|
205
|
-
this.logger.debug(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
},
|
|
211
|
-
'Signing outgoing message with %s keys',
|
|
212
|
-
dkim.keys.length
|
|
213
|
-
);
|
|
176
|
+
const dkim = mail.data.dkim ? new DKIM(mail.data.dkim) : this.dkim;
|
|
177
|
+
this.logger.debug({
|
|
178
|
+
tnx: 'DKIM',
|
|
179
|
+
messageId: mail.message.messageId(),
|
|
180
|
+
dkimDomains: dkim.keys.map(key => key.keySelector + '.' + key.domainName).join(', ')
|
|
181
|
+
}, 'Signing outgoing message with %s keys', dkim.keys.length);
|
|
214
182
|
return dkim.sign(input, mail.data._dkim);
|
|
215
183
|
});
|
|
216
184
|
}
|
|
217
|
-
|
|
218
185
|
this.transporter.send(mail, (...args) => {
|
|
219
186
|
if (args[0]) {
|
|
220
|
-
this.logger.error(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
},
|
|
226
|
-
'Send Error: %s',
|
|
227
|
-
args[0].message
|
|
228
|
-
);
|
|
187
|
+
this.logger.error({
|
|
188
|
+
err: args[0],
|
|
189
|
+
tnx: 'transport',
|
|
190
|
+
action: 'send'
|
|
191
|
+
}, 'Send Error: %s', args[0].message);
|
|
229
192
|
}
|
|
230
|
-
|
|
193
|
+
done(...args);
|
|
231
194
|
});
|
|
232
195
|
});
|
|
233
196
|
});
|
|
234
|
-
|
|
235
197
|
return promise;
|
|
236
198
|
}
|
|
237
|
-
|
|
238
199
|
getVersionString() {
|
|
239
200
|
return util.format('%s (%s; +%s; %s/%s)', packageData.name, packageData.version, packageData.homepage, this.transporter.name, this.transporter.version);
|
|
240
201
|
}
|
|
241
|
-
|
|
202
|
+
/** @internal */
|
|
242
203
|
_processPlugins(step, mail, callback) {
|
|
243
204
|
step = (step || '').toString();
|
|
244
|
-
|
|
245
205
|
if (!this._userPlugins.hasOwnProperty(step)) {
|
|
246
206
|
return callback();
|
|
247
207
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
let defaultPlugins = this._defaultPlugins[step] || [];
|
|
251
|
-
|
|
208
|
+
const userPlugins = this._userPlugins[step] || [];
|
|
209
|
+
const defaultPlugins = this._defaultPlugins[step] || [];
|
|
252
210
|
if (userPlugins.length) {
|
|
253
|
-
this.logger.debug(
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
pluginCount: userPlugins.length,
|
|
257
|
-
step
|
|
258
|
-
},
|
|
259
|
-
'Using %s plugins for %s',
|
|
260
|
-
userPlugins.length,
|
|
211
|
+
this.logger.debug({
|
|
212
|
+
tnx: 'transaction',
|
|
213
|
+
pluginCount: userPlugins.length,
|
|
261
214
|
step
|
|
262
|
-
);
|
|
215
|
+
}, 'Using %s plugins for %s', userPlugins.length, step);
|
|
263
216
|
}
|
|
264
|
-
|
|
265
217
|
if (userPlugins.length + defaultPlugins.length === 0) {
|
|
266
218
|
return callback();
|
|
267
219
|
}
|
|
268
|
-
|
|
269
220
|
let pos = 0;
|
|
270
221
|
let block = 'default';
|
|
271
|
-
|
|
222
|
+
const processPlugins = () => {
|
|
272
223
|
let curplugins = block === 'default' ? defaultPlugins : userPlugins;
|
|
273
224
|
if (pos >= curplugins.length) {
|
|
274
225
|
if (block === 'default' && userPlugins.length) {
|
|
275
226
|
block = 'user';
|
|
276
227
|
pos = 0;
|
|
277
228
|
curplugins = userPlugins;
|
|
278
|
-
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
279
231
|
return callback();
|
|
280
232
|
}
|
|
281
233
|
}
|
|
282
|
-
|
|
234
|
+
const plugin = curplugins[pos++];
|
|
283
235
|
plugin(mail, err => {
|
|
284
236
|
if (err) {
|
|
285
237
|
return callback(err);
|
|
@@ -287,31 +239,26 @@ class Mail extends EventEmitter {
|
|
|
287
239
|
processPlugins();
|
|
288
240
|
});
|
|
289
241
|
};
|
|
290
|
-
|
|
291
242
|
processPlugins();
|
|
292
243
|
}
|
|
293
|
-
|
|
294
244
|
/**
|
|
295
245
|
* Sets up proxy handler for a Nodemailer object
|
|
296
246
|
*
|
|
297
|
-
* @param
|
|
247
|
+
* @param proxyUrl Proxy configuration url
|
|
298
248
|
*/
|
|
299
249
|
setupProxy(proxyUrl) {
|
|
300
|
-
|
|
301
|
-
|
|
250
|
+
const proxy = urllib.parse(proxyUrl);
|
|
302
251
|
// setup socket handler for the mailer object
|
|
303
252
|
this.getSocket = (options, callback) => {
|
|
304
|
-
|
|
305
|
-
|
|
253
|
+
const protocol = proxy.protocol.replace(/:$/, '').toLowerCase();
|
|
306
254
|
if (this.meta.has('proxy_handler_' + protocol)) {
|
|
307
255
|
return this.meta.get('proxy_handler_' + protocol)(proxy, options, callback);
|
|
308
256
|
}
|
|
309
|
-
|
|
310
257
|
switch (protocol) {
|
|
311
258
|
// Connect using a HTTP CONNECT method
|
|
312
259
|
case 'http':
|
|
313
260
|
case 'https':
|
|
314
|
-
httpProxyClient(proxy.href, options.port, options.host, (err, socket) => {
|
|
261
|
+
httpProxyClient(proxy.href, options.port, options.host, this.options.tls || {}, (err, socket) => {
|
|
315
262
|
if (err) {
|
|
316
263
|
return callback(err);
|
|
317
264
|
}
|
|
@@ -325,13 +272,15 @@ class Mail extends EventEmitter {
|
|
|
325
272
|
case 'socks4':
|
|
326
273
|
case 'socks4a': {
|
|
327
274
|
if (!this.meta.has('proxy_socks_module')) {
|
|
328
|
-
|
|
275
|
+
let err = new Error('Socks module not loaded');
|
|
276
|
+
err.code = errors.EPROXY;
|
|
277
|
+
return callback(err);
|
|
329
278
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
279
|
+
const connect = (ipaddress) => {
|
|
280
|
+
const proxyV2 = !!this.meta.get('proxy_socks_module').SocksClient;
|
|
281
|
+
const socksClient = proxyV2 ? this.meta.get('proxy_socks_module').SocksClient : this.meta.get('proxy_socks_module');
|
|
282
|
+
const proxyType = Number(proxy.protocol.replace(/\D/g, '')) || 5;
|
|
283
|
+
const connectionOpts = {
|
|
335
284
|
proxy: {
|
|
336
285
|
ipaddress,
|
|
337
286
|
port: Number(proxy.port),
|
|
@@ -343,23 +292,23 @@ class Mail extends EventEmitter {
|
|
|
343
292
|
},
|
|
344
293
|
command: 'connect'
|
|
345
294
|
};
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
let password = decodeURIComponent(proxy.auth.split(':').pop());
|
|
295
|
+
if (proxy.username || proxy.password) {
|
|
296
|
+
const username = proxy.username || '';
|
|
297
|
+
const password = proxy.password || '';
|
|
350
298
|
if (proxyV2) {
|
|
351
299
|
connectionOpts.proxy.userId = username;
|
|
352
300
|
connectionOpts.proxy.password = password;
|
|
353
|
-
}
|
|
301
|
+
}
|
|
302
|
+
else if (proxyType === 4) {
|
|
354
303
|
connectionOpts.userid = username;
|
|
355
|
-
}
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
356
306
|
connectionOpts.authentication = {
|
|
357
307
|
username,
|
|
358
308
|
password
|
|
359
309
|
};
|
|
360
310
|
}
|
|
361
311
|
}
|
|
362
|
-
|
|
363
312
|
socksClient.createConnection(connectionOpts, (err, info) => {
|
|
364
313
|
if (err) {
|
|
365
314
|
return callback(err);
|
|
@@ -369,11 +318,9 @@ class Mail extends EventEmitter {
|
|
|
369
318
|
});
|
|
370
319
|
});
|
|
371
320
|
};
|
|
372
|
-
|
|
373
321
|
if (net.isIP(proxy.hostname)) {
|
|
374
322
|
return connect(proxy.hostname);
|
|
375
323
|
}
|
|
376
|
-
|
|
377
324
|
return dns.resolve(proxy.hostname, (err, address) => {
|
|
378
325
|
if (err) {
|
|
379
326
|
return callback(err);
|
|
@@ -382,15 +329,17 @@ class Mail extends EventEmitter {
|
|
|
382
329
|
});
|
|
383
330
|
}
|
|
384
331
|
}
|
|
385
|
-
|
|
332
|
+
let err = new Error('Unknown proxy configuration');
|
|
333
|
+
err.code = errors.EPROXY;
|
|
334
|
+
callback(err);
|
|
386
335
|
};
|
|
387
336
|
}
|
|
388
|
-
|
|
337
|
+
/** @internal */
|
|
389
338
|
_convertDataImages(mail, callback) {
|
|
390
339
|
if ((!this.options.attachDataUrls && !mail.data.attachDataUrls) || !mail.data.html) {
|
|
391
340
|
return callback();
|
|
392
341
|
}
|
|
393
|
-
mail.resolveContent(mail.data, 'html', (err, html) => {
|
|
342
|
+
mail.resolveContent(mail.data, 'html', { disableFileAccess: mail.data.disableFileAccess, disableUrlAccess: mail.data.disableUrlAccess }, (err, html) => {
|
|
394
343
|
if (err) {
|
|
395
344
|
return callback(err);
|
|
396
345
|
}
|
|
@@ -398,32 +347,29 @@ class Mail extends EventEmitter {
|
|
|
398
347
|
html = (html || '')
|
|
399
348
|
.toString()
|
|
400
349
|
.replace(/(<img\b[^<>]{0,1024} src\s{0,20}=[\s"']{0,20})(data:([^;]+);[^"'>\s]+)/gi, (match, prefix, dataUri, mimeType) => {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
});
|
|
413
|
-
return prefix + 'cid:' + cid;
|
|
350
|
+
const cid = crypto.randomBytes(10).toString('hex') + '@localhost';
|
|
351
|
+
if (!mail.data.attachments) {
|
|
352
|
+
mail.data.attachments = [];
|
|
353
|
+
}
|
|
354
|
+
if (!Array.isArray(mail.data.attachments)) {
|
|
355
|
+
mail.data.attachments = [].concat(mail.data.attachments || []);
|
|
356
|
+
}
|
|
357
|
+
mail.data.attachments.push({
|
|
358
|
+
path: dataUri,
|
|
359
|
+
cid,
|
|
360
|
+
filename: 'image-' + ++cidCounter + '.' + mimeTypes.detectExtension(mimeType)
|
|
414
361
|
});
|
|
362
|
+
return prefix + 'cid:' + cid;
|
|
363
|
+
});
|
|
415
364
|
mail.data.html = html;
|
|
416
365
|
callback();
|
|
417
366
|
});
|
|
418
367
|
}
|
|
419
|
-
|
|
420
368
|
set(key, value) {
|
|
421
369
|
return this.meta.set(key, value);
|
|
422
370
|
}
|
|
423
|
-
|
|
424
371
|
get(key) {
|
|
425
372
|
return this.meta.get(key);
|
|
426
373
|
}
|
|
427
374
|
}
|
|
428
|
-
|
|
429
|
-
module.exports = Mail;
|
|
375
|
+
export default Mail;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import MimeNode, { type MimeNodePreparedHeaderValue } from '../mime-node/index.js';
|
|
2
|
+
import type { MailComposerOptions } from '../mail-composer/index.js';
|
|
3
|
+
import type { DKIMOptions } from '../dkim/index.js';
|
|
4
|
+
import type { SMTPEnvelopeDsn } from '../smtp-connection/index.js';
|
|
5
|
+
import type { SMTPTransportAuthOptions } from '../smtp-transport/index.js';
|
|
6
|
+
import type { SESSendEmailRequest } from '../ses-transport/index.js';
|
|
7
|
+
import type { NodemailerError } from '../errors.js';
|
|
8
|
+
import type { ResolveContentOptions } from '../shared/index.js';
|
|
9
|
+
import type Mail from './index.js';
|
|
10
|
+
import type { SentMessageInfo } from './index.js';
|
|
11
|
+
/**
|
|
12
|
+
* The message data accepted by sendMail. MailComposerOptions describes the fields the MIME
|
|
13
|
+
* tree is built from, the fields below are the ones the mailer reads on top of those
|
|
14
|
+
*/
|
|
15
|
+
export interface SendMailOptions extends MailComposerOptions {
|
|
16
|
+
/** DKIM signing options for this message, used instead of the ones of the transporter */
|
|
17
|
+
dkim?: DKIMOptions | undefined;
|
|
18
|
+
/** Extra DKIM options for this message, merged over the options of the signer. The SES transport sets skipFields here, the option is not meant for callers */
|
|
19
|
+
_dkim?: DKIMOptions | undefined;
|
|
20
|
+
/** Recipients allowed on this message, 0 disables the limit, defaults to 100000 */
|
|
21
|
+
maxRecipients?: number | undefined;
|
|
22
|
+
/** SMTP transports: DSN parameters for the envelope, sent when the server supports the DSN extension */
|
|
23
|
+
dsn?: SMTPEnvelopeDsn | undefined;
|
|
24
|
+
/** SMTP transports: RFC 8689, send the REQUIRETLS parameter with MAIL FROM */
|
|
25
|
+
requireTLSExtensionEnabled?: boolean | undefined;
|
|
26
|
+
/** SMTP transports: per-message authentication settings, used instead of the transport level auth */
|
|
27
|
+
auth?: SMTPTransportAuthOptions | undefined;
|
|
28
|
+
/** SES transport: extra SendEmailCommand parameters merged into the API call */
|
|
29
|
+
ses?: SESSendEmailRequest | undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Default message fields, the third argument of createTransport. Applied to every message
|
|
33
|
+
* for the fields the message does not set itself, the headers are merged one by one
|
|
34
|
+
*/
|
|
35
|
+
export type MailDefaults = SendMailOptions;
|
|
36
|
+
/**
|
|
37
|
+
* The message data as held by a MailMessage: the options the caller passed to sendMail with
|
|
38
|
+
* the transporter defaults applied. resolveAll rewrites the content and address fields in
|
|
39
|
+
* place and normalize adds the envelope, the Message-ID and the normalized headers
|
|
40
|
+
*/
|
|
41
|
+
export interface MailMessageData extends SendMailOptions {
|
|
42
|
+
/** Header values flattened to strings and keyed by lowercase header name, set by normalize */
|
|
43
|
+
normalizedHeaders?: {
|
|
44
|
+
[key: string]: string;
|
|
45
|
+
} | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Callback for resolveAll and normalize, receives the message data with every content value
|
|
49
|
+
* resolved
|
|
50
|
+
*/
|
|
51
|
+
export type MailMessageDataCallback = (err: NodemailerError | null, data: MailMessageData) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Callback for resolveContent, receives the resolved content value
|
|
54
|
+
*/
|
|
55
|
+
export type MailMessageContentCallback = (err: NodemailerError | null, value?: any) => void;
|
|
56
|
+
/**
|
|
57
|
+
* A single prepared List-* header value, emitted as is
|
|
58
|
+
*/
|
|
59
|
+
export interface MailMessageListHeaderValue extends MimeNodePreparedHeaderValue {
|
|
60
|
+
prepared: boolean;
|
|
61
|
+
foldLines: boolean;
|
|
62
|
+
value: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A List-* header as built from the list value, one prepared value per list entry
|
|
66
|
+
*/
|
|
67
|
+
export interface MailMessageListHeader {
|
|
68
|
+
/** Header key, 'list-' followed by the lowercase list key */
|
|
69
|
+
key: string;
|
|
70
|
+
value: MailMessageListHeaderValue[];
|
|
71
|
+
}
|
|
72
|
+
export default class MailMessage<T = SentMessageInfo> {
|
|
73
|
+
mailer: Mail<T>;
|
|
74
|
+
data: MailMessageData;
|
|
75
|
+
/**
|
|
76
|
+
* The compiled MIME tree. Set once the compile step is done, so it is null while the
|
|
77
|
+
* 'compile' plugins run and set by the time the 'stream' plugins and the transport see
|
|
78
|
+
* the message. Declared as always set, the way @types/nodemailer declared it, since the
|
|
79
|
+
* plugins that read it are the ones that run after it is set
|
|
80
|
+
*/
|
|
81
|
+
message: MimeNode;
|
|
82
|
+
constructor(mailer: Mail<T>, data?: SendMailOptions);
|
|
83
|
+
resolveContent(data: {
|
|
84
|
+
[key: string]: any;
|
|
85
|
+
}, key: string | number, callback: MailMessageContentCallback): void;
|
|
86
|
+
resolveContent(data: {
|
|
87
|
+
[key: string]: any;
|
|
88
|
+
}, key: string | number, options: ResolveContentOptions | false | undefined, callback: MailMessageContentCallback): void;
|
|
89
|
+
resolveContent(data: {
|
|
90
|
+
[key: string]: any;
|
|
91
|
+
}, key: string | number, options?: ResolveContentOptions | false): Promise<any>;
|
|
92
|
+
resolveAll(callback: MailMessageDataCallback): void;
|
|
93
|
+
normalize(callback: MailMessageDataCallback): void;
|
|
94
|
+
setMailerHeader(): void;
|
|
95
|
+
setPriorityHeaders(): void;
|
|
96
|
+
setListHeaders(): void;
|
|
97
|
+
}
|