@nocobase/plugin-workflow-mailer 2.3.0-beta.12 → 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.
Files changed (187) hide show
  1. package/dist/externalVersion.js +6 -6
  2. package/dist/node_modules/joi/dist/joi-browser.min.js +1 -1
  3. package/dist/node_modules/joi/lib/index.js +1 -1
  4. package/dist/node_modules/joi/lib/messages.js +35 -6
  5. package/dist/node_modules/joi/lib/types/keys.js +18 -1
  6. package/dist/node_modules/joi/lib/types/link.js +18 -2
  7. package/dist/node_modules/joi/lib/types/string.js +2 -2
  8. package/dist/node_modules/joi/package.json +1 -1
  9. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +59 -0
  10. package/dist/node_modules/nodemailer/dist/cjs/addressparser/index.js +790 -0
  11. package/dist/node_modules/nodemailer/dist/cjs/base64/index.d.ts +36 -0
  12. package/dist/node_modules/nodemailer/dist/cjs/base64/index.js +119 -0
  13. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +52 -0
  14. package/dist/node_modules/nodemailer/dist/cjs/dkim/index.js +228 -0
  15. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +48 -0
  16. package/dist/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +180 -0
  17. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +36 -0
  18. package/dist/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.js +148 -0
  19. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +52 -0
  20. package/dist/node_modules/nodemailer/dist/cjs/dkim/sign.js +165 -0
  21. package/dist/node_modules/nodemailer/dist/cjs/errors.d.ts +96 -0
  22. package/dist/node_modules/nodemailer/dist/cjs/errors.js +70 -0
  23. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +107 -0
  24. package/dist/node_modules/nodemailer/dist/cjs/fetch/cookies.js +282 -0
  25. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +65 -0
  26. package/dist/node_modules/nodemailer/dist/cjs/fetch/index.js +384 -0
  27. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +64 -0
  28. package/dist/node_modules/nodemailer/dist/cjs/json-transport/index.js +99 -0
  29. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +174 -0
  30. package/dist/node_modules/nodemailer/dist/cjs/mail-composer/index.js +613 -0
  31. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +237 -0
  32. package/dist/node_modules/nodemailer/dist/cjs/mailer/index.js +415 -0
  33. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +97 -0
  34. package/dist/node_modules/nodemailer/dist/cjs/mailer/mail-message.js +342 -0
  35. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +161 -0
  36. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +787 -0
  37. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.d.ts +2 -0
  38. package/dist/node_modules/nodemailer/dist/cjs/mime-funcs/mime-types.js +2103 -0
  39. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +333 -0
  40. package/dist/node_modules/nodemailer/dist/cjs/mime-node/index.js +1493 -0
  41. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.d.ts +5 -0
  42. package/dist/node_modules/nodemailer/dist/cjs/mime-node/last-newline.js +32 -0
  43. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.d.ts +9 -0
  44. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-unix.js +40 -0
  45. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.d.ts +10 -0
  46. package/dist/node_modules/nodemailer/dist/cjs/mime-node/le-windows.js +47 -0
  47. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +124 -0
  48. package/dist/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
  49. package/dist/node_modules/nodemailer/dist/cjs/package-info.d.ts +3 -0
  50. package/dist/node_modules/nodemailer/dist/cjs/package-info.js +7 -0
  51. package/dist/node_modules/nodemailer/dist/cjs/package.json +3 -0
  52. package/dist/node_modules/nodemailer/dist/cjs/punycode/index.d.ts +73 -0
  53. package/dist/node_modules/nodemailer/{lib → dist/cjs}/punycode/index.js +63 -112
  54. package/dist/node_modules/nodemailer/dist/cjs/qp/index.d.ts +32 -0
  55. package/dist/node_modules/nodemailer/dist/cjs/qp/index.js +207 -0
  56. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +69 -0
  57. package/dist/node_modules/nodemailer/dist/cjs/sendmail-transport/index.js +210 -0
  58. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +112 -0
  59. package/dist/node_modules/nodemailer/dist/cjs/ses-transport/index.js +252 -0
  60. package/dist/node_modules/nodemailer/dist/cjs/shared/index.d.ts +260 -0
  61. package/dist/node_modules/nodemailer/dist/cjs/shared/index.js +680 -0
  62. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.d.ts +23 -0
  63. package/dist/node_modules/nodemailer/dist/cjs/shared/objects.js +43 -0
  64. package/dist/node_modules/nodemailer/dist/cjs/shared/url.d.ts +21 -0
  65. package/dist/node_modules/nodemailer/dist/cjs/shared/url.js +255 -0
  66. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +15 -0
  67. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +108 -0
  68. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +47 -0
  69. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +189 -0
  70. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +416 -0
  71. package/dist/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +1837 -0
  72. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +133 -0
  73. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +569 -0
  74. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.d.ts +62 -0
  75. package/dist/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +257 -0
  76. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +156 -0
  77. package/dist/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +371 -0
  78. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +65 -0
  79. package/dist/node_modules/nodemailer/dist/cjs/stream-transport/index.js +146 -0
  80. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.d.ts +35 -0
  81. package/dist/node_modules/nodemailer/dist/cjs/well-known/index.js +41 -0
  82. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.d.ts +2 -0
  83. package/dist/node_modules/nodemailer/dist/cjs/well-known/services.js +674 -0
  84. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +201 -0
  85. package/dist/node_modules/nodemailer/dist/cjs/xoauth2/index.js +426 -0
  86. package/dist/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +59 -0
  87. package/dist/node_modules/nodemailer/dist/esm/addressparser/index.js +786 -0
  88. package/dist/node_modules/nodemailer/dist/esm/base64/index.d.ts +36 -0
  89. package/dist/node_modules/nodemailer/{lib → dist/esm}/base64/index.js +39 -68
  90. package/dist/node_modules/nodemailer/dist/esm/dkim/index.d.ts +52 -0
  91. package/dist/node_modules/nodemailer/{lib → dist/esm}/dkim/index.js +62 -92
  92. package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +48 -0
  93. package/dist/node_modules/nodemailer/dist/esm/dkim/message-parser.js +176 -0
  94. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +36 -0
  95. package/dist/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +141 -0
  96. package/dist/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +52 -0
  97. package/dist/node_modules/nodemailer/dist/esm/dkim/sign.js +125 -0
  98. package/dist/node_modules/nodemailer/dist/esm/errors.d.ts +96 -0
  99. package/dist/node_modules/nodemailer/dist/esm/errors.js +67 -0
  100. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +107 -0
  101. package/dist/node_modules/nodemailer/dist/esm/fetch/cookies.js +242 -0
  102. package/dist/node_modules/nodemailer/dist/esm/fetch/index.d.ts +65 -0
  103. package/dist/node_modules/nodemailer/dist/esm/fetch/index.js +344 -0
  104. package/dist/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +64 -0
  105. package/dist/node_modules/nodemailer/dist/esm/json-transport/index.js +62 -0
  106. package/dist/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +174 -0
  107. package/dist/node_modules/nodemailer/{lib → dist/esm}/mail-composer/index.js +283 -275
  108. package/dist/node_modules/nodemailer/dist/esm/mailer/index.d.ts +237 -0
  109. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/index.js +151 -205
  110. package/dist/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +97 -0
  111. package/dist/node_modules/nodemailer/{lib → dist/esm}/mailer/mail-message.js +111 -125
  112. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +161 -0
  113. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/index.js +738 -0
  114. package/dist/node_modules/nodemailer/dist/esm/mime-funcs/mime-types.d.ts +2 -0
  115. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-funcs/mime-types.js +43 -49
  116. package/dist/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +333 -0
  117. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/index.js +576 -437
  118. package/dist/node_modules/nodemailer/dist/esm/mime-node/last-newline.d.ts +5 -0
  119. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/last-newline.js +4 -10
  120. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-unix.d.ts +9 -0
  121. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-unix.js +7 -15
  122. package/dist/node_modules/nodemailer/dist/esm/mime-node/le-windows.d.ts +10 -0
  123. package/dist/node_modules/nodemailer/{lib → dist/esm}/mime-node/le-windows.js +6 -16
  124. package/dist/node_modules/nodemailer/dist/esm/nodemailer.d.ts +124 -0
  125. package/dist/node_modules/nodemailer/dist/esm/nodemailer.js +166 -0
  126. package/dist/node_modules/nodemailer/dist/esm/package-info.d.ts +3 -0
  127. package/dist/node_modules/nodemailer/dist/esm/package-info.js +4 -0
  128. package/dist/node_modules/nodemailer/dist/esm/package.json +3 -0
  129. package/dist/node_modules/nodemailer/dist/esm/punycode/index.d.ts +73 -0
  130. package/dist/node_modules/nodemailer/dist/esm/punycode/index.js +405 -0
  131. package/dist/node_modules/nodemailer/dist/esm/qp/index.d.ts +32 -0
  132. package/dist/node_modules/nodemailer/{lib → dist/esm}/qp/index.js +59 -77
  133. package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +69 -0
  134. package/dist/node_modules/nodemailer/dist/esm/sendmail-transport/index.js +170 -0
  135. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +112 -0
  136. package/dist/node_modules/nodemailer/dist/esm/ses-transport/index.js +212 -0
  137. package/dist/node_modules/nodemailer/dist/esm/shared/index.d.ts +260 -0
  138. package/dist/node_modules/nodemailer/dist/esm/shared/index.js +631 -0
  139. package/dist/node_modules/nodemailer/dist/esm/shared/objects.d.ts +23 -0
  140. package/dist/node_modules/nodemailer/dist/esm/shared/objects.js +38 -0
  141. package/dist/node_modules/nodemailer/dist/esm/shared/url.d.ts +21 -0
  142. package/dist/node_modules/nodemailer/dist/esm/shared/url.js +214 -0
  143. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +15 -0
  144. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +103 -0
  145. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +47 -0
  146. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.js +149 -0
  147. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +416 -0
  148. package/dist/node_modules/nodemailer/dist/esm/smtp-connection/index.js +1797 -0
  149. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +133 -0
  150. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/index.js +195 -314
  151. package/dist/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.d.ts +62 -0
  152. package/dist/node_modules/nodemailer/{lib → dist/esm}/smtp-pool/pool-resource.js +70 -107
  153. package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +156 -0
  154. package/dist/node_modules/nodemailer/dist/esm/smtp-transport/index.js +331 -0
  155. package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +65 -0
  156. package/dist/node_modules/nodemailer/dist/esm/stream-transport/index.js +106 -0
  157. package/dist/node_modules/nodemailer/dist/esm/well-known/index.d.ts +35 -0
  158. package/dist/node_modules/nodemailer/{lib → dist/esm}/well-known/index.js +12 -23
  159. package/dist/node_modules/nodemailer/dist/esm/well-known/services.d.ts +2 -0
  160. package/dist/node_modules/nodemailer/dist/esm/well-known/services.js +671 -0
  161. package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +201 -0
  162. package/dist/node_modules/nodemailer/dist/esm/xoauth2/index.js +386 -0
  163. package/dist/node_modules/nodemailer/dist/well-known/services.json +640 -0
  164. package/dist/node_modules/nodemailer/package.json +1 -1
  165. package/package.json +4 -4
  166. package/dist/node_modules/nodemailer/.gitattributes +0 -6
  167. package/dist/node_modules/nodemailer/.ncurc.js +0 -7
  168. package/dist/node_modules/nodemailer/.prettierrc.js +0 -8
  169. package/dist/node_modules/nodemailer/lib/addressparser/index.js +0 -313
  170. package/dist/node_modules/nodemailer/lib/dkim/message-parser.js +0 -155
  171. package/dist/node_modules/nodemailer/lib/dkim/relaxed-body.js +0 -154
  172. package/dist/node_modules/nodemailer/lib/dkim/sign.js +0 -117
  173. package/dist/node_modules/nodemailer/lib/fetch/cookies.js +0 -281
  174. package/dist/node_modules/nodemailer/lib/fetch/index.js +0 -274
  175. package/dist/node_modules/nodemailer/lib/json-transport/index.js +0 -82
  176. package/dist/node_modules/nodemailer/lib/mime-funcs/index.js +0 -625
  177. package/dist/node_modules/nodemailer/lib/nodemailer.js +0 -1
  178. package/dist/node_modules/nodemailer/lib/sendmail-transport/index.js +0 -210
  179. package/dist/node_modules/nodemailer/lib/ses-transport/index.js +0 -349
  180. package/dist/node_modules/nodemailer/lib/shared/index.js +0 -688
  181. package/dist/node_modules/nodemailer/lib/smtp-connection/data-stream.js +0 -108
  182. package/dist/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +0 -143
  183. package/dist/node_modules/nodemailer/lib/smtp-connection/index.js +0 -1825
  184. package/dist/node_modules/nodemailer/lib/smtp-transport/index.js +0 -416
  185. package/dist/node_modules/nodemailer/lib/stream-transport/index.js +0 -135
  186. package/dist/node_modules/nodemailer/lib/well-known/services.json +0 -343
  187. package/dist/node_modules/nodemailer/lib/xoauth2/index.js +0 -376
@@ -1,416 +0,0 @@
1
- 'use strict';
2
-
3
- const EventEmitter = require('events');
4
- const SMTPConnection = require('../smtp-connection');
5
- const wellKnown = require('../well-known');
6
- const shared = require('../shared');
7
- const XOAuth2 = require('../xoauth2');
8
- const packageData = require('../../package.json');
9
-
10
- /**
11
- * Creates a SMTP transport object for Nodemailer
12
- *
13
- * @constructor
14
- * @param {Object} options Connection options
15
- */
16
- class SMTPTransport extends EventEmitter {
17
- constructor(options) {
18
- super();
19
-
20
- options = options || {};
21
-
22
- if (typeof options === 'string') {
23
- options = {
24
- url: options
25
- };
26
- }
27
-
28
- let urlData;
29
- let service = options.service;
30
-
31
- if (typeof options.getSocket === 'function') {
32
- this.getSocket = options.getSocket;
33
- }
34
-
35
- if (options.url) {
36
- urlData = shared.parseConnectionUrl(options.url);
37
- service = service || urlData.service;
38
- }
39
-
40
- this.options = shared.assign(
41
- false, // create new object
42
- options, // regular options
43
- urlData, // url options
44
- service && wellKnown(service) // wellknown options
45
- );
46
-
47
- this.logger = shared.getLogger(this.options, {
48
- component: this.options.component || 'smtp-transport'
49
- });
50
-
51
- // temporary object
52
- let connection = new SMTPConnection(this.options);
53
-
54
- this.name = 'SMTP';
55
- this.version = packageData.version + '[client:' + connection.version + ']';
56
-
57
- if (this.options.auth) {
58
- this.auth = this.getAuth({});
59
- }
60
- }
61
-
62
- /**
63
- * Placeholder function for creating proxy sockets. This method immediatelly returns
64
- * without a socket
65
- *
66
- * @param {Object} options Connection options
67
- * @param {Function} callback Callback function to run with the socket keys
68
- */
69
- getSocket(options, callback) {
70
- // return immediatelly
71
- return setImmediate(() => callback(null, false));
72
- }
73
-
74
- getAuth(authOpts) {
75
- if (!authOpts) {
76
- return this.auth;
77
- }
78
-
79
- let hasAuth = false;
80
- let authData = {};
81
-
82
- if (this.options.auth && typeof this.options.auth === 'object') {
83
- Object.keys(this.options.auth).forEach(key => {
84
- hasAuth = true;
85
- authData[key] = this.options.auth[key];
86
- });
87
- }
88
-
89
- if (authOpts && typeof authOpts === 'object') {
90
- Object.keys(authOpts).forEach(key => {
91
- hasAuth = true;
92
- authData[key] = authOpts[key];
93
- });
94
- }
95
-
96
- if (!hasAuth) {
97
- return false;
98
- }
99
-
100
- switch ((authData.type || '').toString().toUpperCase()) {
101
- case 'OAUTH2': {
102
- if (!authData.service && !authData.user) {
103
- return false;
104
- }
105
- let oauth2 = new XOAuth2(authData, this.logger);
106
- oauth2.provisionCallback = (this.mailer && this.mailer.get('oauth2_provision_cb')) || oauth2.provisionCallback;
107
- oauth2.on('token', token => this.mailer.emit('token', token));
108
- oauth2.on('error', err => this.emit('error', err));
109
- return {
110
- type: 'OAUTH2',
111
- user: authData.user,
112
- oauth2,
113
- method: 'XOAUTH2'
114
- };
115
- }
116
- default:
117
- return {
118
- type: (authData.type || '').toString().toUpperCase() || 'LOGIN',
119
- user: authData.user,
120
- credentials: {
121
- user: authData.user || '',
122
- pass: authData.pass,
123
- options: authData.options
124
- },
125
- method: (authData.method || '').trim().toUpperCase() || this.options.authMethod || false
126
- };
127
- }
128
- }
129
-
130
- /**
131
- * Sends an e-mail using the selected settings
132
- *
133
- * @param {Object} mail Mail object
134
- * @param {Function} callback Callback function
135
- */
136
- send(mail, callback) {
137
- this.getSocket(this.options, (err, socketOptions) => {
138
- if (err) {
139
- return callback(err);
140
- }
141
-
142
- let returned = false;
143
- let options = this.options;
144
- if (socketOptions && socketOptions.connection) {
145
- this.logger.info(
146
- {
147
- tnx: 'proxy',
148
- remoteAddress: socketOptions.connection.remoteAddress,
149
- remotePort: socketOptions.connection.remotePort,
150
- destHost: options.host || '',
151
- destPort: options.port || '',
152
- action: 'connected'
153
- },
154
- 'Using proxied socket from %s:%s to %s:%s',
155
- socketOptions.connection.remoteAddress,
156
- socketOptions.connection.remotePort,
157
- options.host || '',
158
- options.port || ''
159
- );
160
-
161
- // only copy options if we need to modify it
162
- options = shared.assign(false, options);
163
- Object.keys(socketOptions).forEach(key => {
164
- options[key] = socketOptions[key];
165
- });
166
- }
167
-
168
- let connection = new SMTPConnection(options);
169
-
170
- connection.once('error', err => {
171
- if (returned) {
172
- return;
173
- }
174
- returned = true;
175
- connection.close();
176
- return callback(err);
177
- });
178
-
179
- connection.once('end', () => {
180
- if (returned) {
181
- return;
182
- }
183
-
184
- let timer = setTimeout(() => {
185
- if (returned) {
186
- return;
187
- }
188
- returned = true;
189
- // still have not returned, this means we have an unexpected connection close
190
- let err = new Error('Unexpected socket close');
191
- if (connection && connection._socket && connection._socket.upgrading) {
192
- // starttls connection errors
193
- err.code = 'ETLS';
194
- }
195
- callback(err);
196
- }, 1000);
197
-
198
- try {
199
- timer.unref();
200
- } catch (E) {
201
- // Ignore. Happens on envs with non-node timer implementation
202
- }
203
- });
204
-
205
- let sendMessage = () => {
206
- let envelope = mail.message.getEnvelope();
207
- let messageId = mail.message.messageId();
208
-
209
- let recipients = [].concat(envelope.to || []);
210
- if (recipients.length > 3) {
211
- recipients.push('...and ' + recipients.splice(2).length + ' more');
212
- }
213
-
214
- if (mail.data.dsn) {
215
- envelope.dsn = mail.data.dsn;
216
- }
217
-
218
- this.logger.info(
219
- {
220
- tnx: 'send',
221
- messageId
222
- },
223
- 'Sending message %s to <%s>',
224
- messageId,
225
- recipients.join(', ')
226
- );
227
-
228
- connection.send(envelope, mail.message.createReadStream(), (err, info) => {
229
- returned = true;
230
- connection.close();
231
- if (err) {
232
- this.logger.error(
233
- {
234
- err,
235
- tnx: 'send'
236
- },
237
- 'Send error for %s: %s',
238
- messageId,
239
- err.message
240
- );
241
- return callback(err);
242
- }
243
- info.envelope = {
244
- from: envelope.from,
245
- to: envelope.to
246
- };
247
- info.messageId = messageId;
248
- try {
249
- return callback(null, info);
250
- } catch (E) {
251
- this.logger.error(
252
- {
253
- err: E,
254
- tnx: 'callback'
255
- },
256
- 'Callback error for %s: %s',
257
- messageId,
258
- E.message
259
- );
260
- }
261
- });
262
- };
263
-
264
- connection.connect(() => {
265
- if (returned) {
266
- return;
267
- }
268
-
269
- let auth = this.getAuth(mail.data.auth);
270
-
271
- if (auth && (connection.allowsAuth || options.forceAuth)) {
272
- connection.login(auth, err => {
273
- if (auth && auth !== this.auth && auth.oauth2) {
274
- auth.oauth2.removeAllListeners();
275
- }
276
- if (returned) {
277
- return;
278
- }
279
-
280
- if (err) {
281
- returned = true;
282
- connection.close();
283
- return callback(err);
284
- }
285
-
286
- sendMessage();
287
- });
288
- } else {
289
- sendMessage();
290
- }
291
- });
292
- });
293
- }
294
-
295
- /**
296
- * Verifies SMTP configuration
297
- *
298
- * @param {Function} callback Callback function
299
- */
300
- verify(callback) {
301
- let promise;
302
-
303
- if (!callback) {
304
- promise = new Promise((resolve, reject) => {
305
- callback = shared.callbackPromise(resolve, reject);
306
- });
307
- }
308
-
309
- this.getSocket(this.options, (err, socketOptions) => {
310
- if (err) {
311
- return callback(err);
312
- }
313
-
314
- let options = this.options;
315
- if (socketOptions && socketOptions.connection) {
316
- this.logger.info(
317
- {
318
- tnx: 'proxy',
319
- remoteAddress: socketOptions.connection.remoteAddress,
320
- remotePort: socketOptions.connection.remotePort,
321
- destHost: options.host || '',
322
- destPort: options.port || '',
323
- action: 'connected'
324
- },
325
- 'Using proxied socket from %s:%s to %s:%s',
326
- socketOptions.connection.remoteAddress,
327
- socketOptions.connection.remotePort,
328
- options.host || '',
329
- options.port || ''
330
- );
331
-
332
- options = shared.assign(false, options);
333
- Object.keys(socketOptions).forEach(key => {
334
- options[key] = socketOptions[key];
335
- });
336
- }
337
-
338
- let connection = new SMTPConnection(options);
339
- let returned = false;
340
-
341
- connection.once('error', err => {
342
- if (returned) {
343
- return;
344
- }
345
- returned = true;
346
- connection.close();
347
- return callback(err);
348
- });
349
-
350
- connection.once('end', () => {
351
- if (returned) {
352
- return;
353
- }
354
- returned = true;
355
- return callback(new Error('Connection closed'));
356
- });
357
-
358
- let finalize = () => {
359
- if (returned) {
360
- return;
361
- }
362
- returned = true;
363
- connection.quit();
364
- return callback(null, true);
365
- };
366
-
367
- connection.connect(() => {
368
- if (returned) {
369
- return;
370
- }
371
-
372
- let authData = this.getAuth({});
373
-
374
- if (authData && (connection.allowsAuth || options.forceAuth)) {
375
- connection.login(authData, err => {
376
- if (returned) {
377
- return;
378
- }
379
-
380
- if (err) {
381
- returned = true;
382
- connection.close();
383
- return callback(err);
384
- }
385
-
386
- finalize();
387
- });
388
- } else if (!authData && connection.allowsAuth && options.forceAuth) {
389
- let err = new Error('Authentication info was not provided');
390
- err.code = 'NoAuth';
391
-
392
- returned = true;
393
- connection.close();
394
- return callback(err);
395
- } else {
396
- finalize();
397
- }
398
- });
399
- });
400
-
401
- return promise;
402
- }
403
-
404
- /**
405
- * Releases resources
406
- */
407
- close() {
408
- if (this.auth && this.auth.oauth2) {
409
- this.auth.oauth2.removeAllListeners();
410
- }
411
- this.emit('close');
412
- }
413
- }
414
-
415
- // expose to the world
416
- module.exports = SMTPTransport;
@@ -1,135 +0,0 @@
1
- 'use strict';
2
-
3
- const packageData = require('../../package.json');
4
- const shared = require('../shared');
5
-
6
- /**
7
- * Generates a Transport object for streaming
8
- *
9
- * Possible options can be the following:
10
- *
11
- * * **buffer** if true, then returns the message as a Buffer object instead of a stream
12
- * * **newline** either 'windows' or 'unix'
13
- *
14
- * @constructor
15
- * @param {Object} optional config parameter
16
- */
17
- class StreamTransport {
18
- constructor(options) {
19
- options = options || {};
20
-
21
- this.options = options || {};
22
-
23
- this.name = 'StreamTransport';
24
- this.version = packageData.version;
25
-
26
- this.logger = shared.getLogger(this.options, {
27
- component: this.options.component || 'stream-transport'
28
- });
29
-
30
- this.winbreak = ['win', 'windows', 'dos', '\r\n'].includes((options.newline || '').toString().toLowerCase());
31
- }
32
-
33
- /**
34
- * Compiles a mailcomposer message and forwards it to handler that sends it
35
- *
36
- * @param {Object} emailMessage MailComposer object
37
- * @param {Function} callback Callback function to run when the sending is completed
38
- */
39
- send(mail, done) {
40
- // We probably need this in the output
41
- mail.message.keepBcc = true;
42
-
43
- let envelope = mail.data.envelope || mail.message.getEnvelope();
44
- let messageId = mail.message.messageId();
45
-
46
- let recipients = [].concat(envelope.to || []);
47
- if (recipients.length > 3) {
48
- recipients.push('...and ' + recipients.splice(2).length + ' more');
49
- }
50
- this.logger.info(
51
- {
52
- tnx: 'send',
53
- messageId
54
- },
55
- 'Sending message %s to <%s> using %s line breaks',
56
- messageId,
57
- recipients.join(', '),
58
- this.winbreak ? '<CR><LF>' : '<LF>'
59
- );
60
-
61
- setImmediate(() => {
62
- let stream;
63
-
64
- try {
65
- stream = mail.message.createReadStream();
66
- } catch (E) {
67
- this.logger.error(
68
- {
69
- err: E,
70
- tnx: 'send',
71
- messageId
72
- },
73
- 'Creating send stream failed for %s. %s',
74
- messageId,
75
- E.message
76
- );
77
- return done(E);
78
- }
79
-
80
- if (!this.options.buffer) {
81
- stream.once('error', err => {
82
- this.logger.error(
83
- {
84
- err,
85
- tnx: 'send',
86
- messageId
87
- },
88
- 'Failed creating message for %s. %s',
89
- messageId,
90
- err.message
91
- );
92
- });
93
- return done(null, {
94
- envelope: mail.data.envelope || mail.message.getEnvelope(),
95
- messageId,
96
- message: stream
97
- });
98
- }
99
-
100
- let chunks = [];
101
- let chunklen = 0;
102
- stream.on('readable', () => {
103
- let chunk;
104
- while ((chunk = stream.read()) !== null) {
105
- chunks.push(chunk);
106
- chunklen += chunk.length;
107
- }
108
- });
109
-
110
- stream.once('error', err => {
111
- this.logger.error(
112
- {
113
- err,
114
- tnx: 'send',
115
- messageId
116
- },
117
- 'Failed creating message for %s. %s',
118
- messageId,
119
- err.message
120
- );
121
- return done(err);
122
- });
123
-
124
- stream.on('end', () =>
125
- done(null, {
126
- envelope: mail.data.envelope || mail.message.getEnvelope(),
127
- messageId,
128
- message: Buffer.concat(chunks, chunklen)
129
- })
130
- );
131
- });
132
- }
133
- }
134
-
135
- module.exports = StreamTransport;