m06_task3.js 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. package/.idea/.name +1 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +10 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/node_lab_6.iml +12 -0
  6. package/06_task2.html +73 -0
  7. package/06_task2.js +52 -0
  8. package/06_task3.js +3 -0
  9. package/06_task4.js +3 -0
  10. package/m06_task3.js +28 -0
  11. package/package/index.js +28 -0
  12. package/package/node_modules/.package-lock.json +31 -0
  13. package/package/node_modules/@types/node/LICENSE +21 -0
  14. package/package/node_modules/@types/node/README.md +16 -0
  15. package/package/node_modules/@types/node/assert/strict.d.ts +8 -0
  16. package/package/node_modules/@types/node/assert.d.ts +961 -0
  17. package/package/node_modules/@types/node/async_hooks.d.ts +501 -0
  18. package/package/node_modules/@types/node/buffer.d.ts +2258 -0
  19. package/package/node_modules/@types/node/child_process.d.ts +1369 -0
  20. package/package/node_modules/@types/node/cluster.d.ts +410 -0
  21. package/package/node_modules/@types/node/console.d.ts +412 -0
  22. package/package/node_modules/@types/node/constants.d.ts +18 -0
  23. package/package/node_modules/@types/node/crypto.d.ts +3964 -0
  24. package/package/node_modules/@types/node/dgram.d.ts +545 -0
  25. package/package/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
  26. package/package/node_modules/@types/node/dns/promises.d.ts +370 -0
  27. package/package/node_modules/@types/node/dns.d.ts +659 -0
  28. package/package/node_modules/@types/node/dom-events.d.ts +126 -0
  29. package/package/node_modules/@types/node/domain.d.ts +170 -0
  30. package/package/node_modules/@types/node/events.d.ts +678 -0
  31. package/package/node_modules/@types/node/fs/promises.d.ts +1138 -0
  32. package/package/node_modules/@types/node/fs.d.ts +3872 -0
  33. package/package/node_modules/@types/node/globals.d.ts +300 -0
  34. package/package/node_modules/@types/node/globals.global.d.ts +1 -0
  35. package/package/node_modules/@types/node/http.d.ts +1614 -0
  36. package/package/node_modules/@types/node/http2.d.ts +2134 -0
  37. package/package/node_modules/@types/node/https.d.ts +541 -0
  38. package/package/node_modules/@types/node/index.d.ts +133 -0
  39. package/package/node_modules/@types/node/inspector.d.ts +2741 -0
  40. package/package/node_modules/@types/node/module.d.ts +114 -0
  41. package/package/node_modules/@types/node/net.d.ts +869 -0
  42. package/package/node_modules/@types/node/os.d.ts +466 -0
  43. package/package/node_modules/@types/node/package.json +232 -0
  44. package/package/node_modules/@types/node/path.d.ts +191 -0
  45. package/package/node_modules/@types/node/perf_hooks.d.ts +625 -0
  46. package/package/node_modules/@types/node/process.d.ts +1482 -0
  47. package/package/node_modules/@types/node/punycode.d.ts +117 -0
  48. package/package/node_modules/@types/node/querystring.d.ts +131 -0
  49. package/package/node_modules/@types/node/readline/promises.d.ts +143 -0
  50. package/package/node_modules/@types/node/readline.d.ts +653 -0
  51. package/package/node_modules/@types/node/repl.d.ts +424 -0
  52. package/package/node_modules/@types/node/stream/consumers.d.ts +12 -0
  53. package/package/node_modules/@types/node/stream/promises.d.ts +42 -0
  54. package/package/node_modules/@types/node/stream/web.d.ts +330 -0
  55. package/package/node_modules/@types/node/stream.d.ts +1340 -0
  56. package/package/node_modules/@types/node/string_decoder.d.ts +67 -0
  57. package/package/node_modules/@types/node/test.d.ts +314 -0
  58. package/package/node_modules/@types/node/timers/promises.d.ts +68 -0
  59. package/package/node_modules/@types/node/timers.d.ts +94 -0
  60. package/package/node_modules/@types/node/tls.d.ts +1028 -0
  61. package/package/node_modules/@types/node/trace_events.d.ts +171 -0
  62. package/package/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  63. package/package/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
  64. package/package/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
  65. package/package/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
  66. package/package/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
  67. package/package/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
  68. package/package/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  69. package/package/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
  70. package/package/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
  71. package/package/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
  72. package/package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
  73. package/package/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
  74. package/package/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
  75. package/package/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
  76. package/package/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  77. package/package/node_modules/@types/node/ts4.8/events.d.ts +678 -0
  78. package/package/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
  79. package/package/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
  80. package/package/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
  81. package/package/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  82. package/package/node_modules/@types/node/ts4.8/http.d.ts +1614 -0
  83. package/package/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
  84. package/package/node_modules/@types/node/ts4.8/https.d.ts +541 -0
  85. package/package/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  86. package/package/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
  87. package/package/node_modules/@types/node/ts4.8/module.d.ts +114 -0
  88. package/package/node_modules/@types/node/ts4.8/net.d.ts +869 -0
  89. package/package/node_modules/@types/node/ts4.8/os.d.ts +466 -0
  90. package/package/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  91. package/package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
  92. package/package/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
  93. package/package/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  94. package/package/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
  95. package/package/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  96. package/package/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
  97. package/package/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
  98. package/package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  99. package/package/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
  100. package/package/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
  101. package/package/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
  102. package/package/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  103. package/package/node_modules/@types/node/ts4.8/test.d.ts +314 -0
  104. package/package/node_modules/@types/node/ts4.8/timers/promises.d.ts +68 -0
  105. package/package/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
  106. package/package/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
  107. package/package/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  108. package/package/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  109. package/package/node_modules/@types/node/ts4.8/url.d.ts +897 -0
  110. package/package/node_modules/@types/node/ts4.8/util.d.ts +1850 -0
  111. package/package/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
  112. package/package/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
  113. package/package/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  114. package/package/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
  115. package/package/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  116. package/package/node_modules/@types/node/tty.d.ts +206 -0
  117. package/package/node_modules/@types/node/url.d.ts +897 -0
  118. package/package/node_modules/@types/node/util.d.ts +1850 -0
  119. package/package/node_modules/@types/node/v8.d.ts +396 -0
  120. package/package/node_modules/@types/node/vm.d.ts +509 -0
  121. package/package/node_modules/@types/node/wasi.d.ts +158 -0
  122. package/package/node_modules/@types/node/worker_threads.d.ts +689 -0
  123. package/package/node_modules/@types/node/zlib.d.ts +517 -0
  124. package/package/node_modules/@types/nodemailer/LICENSE +21 -0
  125. package/package/node_modules/@types/nodemailer/README.md +16 -0
  126. package/package/node_modules/@types/nodemailer/index.d.ts +83 -0
  127. package/package/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
  128. package/package/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
  129. package/package/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
  130. package/package/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
  131. package/package/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
  132. package/package/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +11 -0
  133. package/package/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
  134. package/package/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
  135. package/package/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +50 -0
  136. package/package/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
  137. package/package/node_modules/@types/nodemailer/lib/mailer/index.d.ts +230 -0
  138. package/package/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +28 -0
  139. package/package/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
  140. package/package/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
  141. package/package/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +137 -0
  142. package/package/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
  143. package/package/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
  144. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
  145. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
  146. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
  147. package/package/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +136 -0
  148. package/package/node_modules/@types/nodemailer/lib/shared/index.d.ts +51 -0
  149. package/package/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
  150. package/package/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +11 -0
  151. package/package/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +254 -0
  152. package/package/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +90 -0
  153. package/package/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
  154. package/package/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
  155. package/package/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +56 -0
  156. package/package/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
  157. package/package/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +110 -0
  158. package/package/node_modules/@types/nodemailer/package.json +37 -0
  159. package/package/node_modules/nodemailer/.gitattributes +6 -0
  160. package/package/node_modules/nodemailer/.prettierrc.js +8 -0
  161. package/package/node_modules/nodemailer/CHANGELOG.md +715 -0
  162. package/package/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
  163. package/package/node_modules/nodemailer/CONTRIBUTING.md +67 -0
  164. package/package/node_modules/nodemailer/LICENSE +16 -0
  165. package/package/node_modules/nodemailer/README.md +93 -0
  166. package/package/node_modules/nodemailer/SECURITY.txt +22 -0
  167. package/package/node_modules/nodemailer/lib/addressparser/index.js +313 -0
  168. package/package/node_modules/nodemailer/lib/base64/index.js +142 -0
  169. package/package/node_modules/nodemailer/lib/dkim/index.js +251 -0
  170. package/package/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
  171. package/package/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  172. package/package/node_modules/nodemailer/lib/dkim/sign.js +117 -0
  173. package/package/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
  174. package/package/node_modules/nodemailer/lib/fetch/index.js +269 -0
  175. package/package/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  176. package/package/node_modules/nodemailer/lib/mail-composer/index.js +558 -0
  177. package/package/node_modules/nodemailer/lib/mailer/index.js +427 -0
  178. package/package/node_modules/nodemailer/lib/mailer/mail-message.js +315 -0
  179. package/package/node_modules/nodemailer/lib/mime-funcs/index.js +619 -0
  180. package/package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2102 -0
  181. package/package/node_modules/nodemailer/lib/mime-node/index.js +1290 -0
  182. package/package/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  183. package/package/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
  184. package/package/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
  185. package/package/node_modules/nodemailer/lib/nodemailer.js +143 -0
  186. package/package/node_modules/nodemailer/lib/qp/index.js +219 -0
  187. package/package/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
  188. package/package/node_modules/nodemailer/lib/ses-transport/index.js +349 -0
  189. package/package/node_modules/nodemailer/lib/shared/index.js +639 -0
  190. package/package/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
  191. package/package/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
  192. package/package/node_modules/nodemailer/lib/smtp-connection/index.js +1786 -0
  193. package/package/node_modules/nodemailer/lib/smtp-pool/index.js +648 -0
  194. package/package/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +253 -0
  195. package/package/node_modules/nodemailer/lib/smtp-transport/index.js +416 -0
  196. package/package/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  197. package/package/node_modules/nodemailer/lib/well-known/index.js +47 -0
  198. package/package/node_modules/nodemailer/lib/well-known/services.json +286 -0
  199. package/package/node_modules/nodemailer/lib/xoauth2/index.js +376 -0
  200. package/package/node_modules/nodemailer/package.json +46 -0
  201. package/package/node_modules/nodemailer/postinstall.js +101 -0
  202. package/package/package-lock.json +60 -0
  203. package/package/package.json +6 -0
  204. package/package.json +19 -0
@@ -0,0 +1,254 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+ import * as net from 'net';
5
+ import { Readable } from 'stream';
6
+ import * as tls from 'tls';
7
+
8
+ import * as shared from '../shared';
9
+
10
+ import MimeNode = require('../mime-node');
11
+ import XOAuth2 = require('../xoauth2');
12
+
13
+ type ms = number;
14
+
15
+ declare namespace SMTPConnection {
16
+ interface Credentials {
17
+ /** the username */
18
+ user: string;
19
+ /** then password */
20
+ pass: string;
21
+ }
22
+
23
+ type OAuth2 = XOAuth2.Options;
24
+
25
+ interface AuthenticationTypeCustom extends Credentials {
26
+ /** indicates the authetication type, defaults to ‘login’, other option is ‘oauth2’ or ‘custom’ */
27
+ type: 'custom' | 'Custom' | 'CUSTOM';
28
+ method: string;
29
+ }
30
+
31
+ interface AuthenticationTypeLogin extends Credentials {
32
+ /** indicates the authetication type, defaults to ‘login’, other option is ‘oauth2’ or ‘custom’ */
33
+ type?: 'login' | 'Login' | 'LOGIN' | undefined;
34
+ }
35
+
36
+ interface AuthenticationTypeOAuth2 extends OAuth2 {
37
+ /** indicates the authetication type, defaults to ‘login’, other option is ‘oauth2’ or ‘custom’ */
38
+ type?: 'oauth2' | 'OAuth2' | 'OAUTH2' | undefined;
39
+ }
40
+
41
+ type AuthenticationType = AuthenticationTypeCustom | AuthenticationTypeLogin | AuthenticationTypeOAuth2;
42
+
43
+ interface AuthenticationCredentials {
44
+ /** normal authentication object */
45
+ credentials: Credentials;
46
+ }
47
+
48
+ interface AuthenticationOAuth2 {
49
+ /** if set then forces smtp-connection to use XOAuth2 for authentication */
50
+ oauth2: OAuth2;
51
+ }
52
+
53
+ interface CustomAuthenticationResponse {
54
+ command: string;
55
+ response: string;
56
+ status: number;
57
+ text: string;
58
+ code?: number | undefined;
59
+ }
60
+
61
+ interface CustomAuthenticationContext {
62
+ auth: AuthenticationCredentials;
63
+ authMethod: string;
64
+ extensions: string[];
65
+ authMethods: string[];
66
+ maxAllowedSize: number | false;
67
+ sendCommand(cmd: string): Promise<CustomAuthenticationResponse>;
68
+ sendCommand(cmd: string, done: (err: Error | null, data: CustomAuthenticationResponse) => void): void;
69
+ resolve(): unknown;
70
+ reject(err: Error | string): unknown;
71
+ }
72
+
73
+ interface CustomAuthenticationHandlers {
74
+ [method: string]: (ctx: CustomAuthenticationContext) => Promise<boolean> | unknown;
75
+ }
76
+
77
+ type DSNOption = 'NEVER' | 'SUCCESS' | 'FAILURE' | 'DELAY';
78
+
79
+ interface DSNOptions {
80
+ /** return either the full message ‘FULL’ or only headers ‘HDRS’ */
81
+ ret?: 'Full' | 'HDRS' | undefined;
82
+ /** sender’s ‘envelope identifier’ for tracking */
83
+ envid?: string | undefined;
84
+ /** when to send a DSN. Multiple options are OK - array or comma delimited. NEVER must appear by itself. */
85
+ notify?: DSNOption | DSNOption[] | undefined;
86
+ /** original recipient */
87
+ orcpt?: string | undefined;
88
+ }
89
+
90
+ interface Envelope {
91
+ /** includes an address object or is set to false */
92
+ from: string | false;
93
+ /** the recipient address or an array of addresses */
94
+ to: string | string[];
95
+ /** an optional value of the predicted size of the message in bytes. This value is used if the server supports the SIZE extension (RFC1870) */
96
+ size?: number | undefined;
97
+ /** if true then inform the server that this message might contain bytes outside 7bit ascii range */
98
+ use8BitMime?: boolean | undefined;
99
+ /** the dsn options */
100
+ dsn?: DSNOptions | undefined;
101
+ }
102
+
103
+ interface SMTPError extends NodeJS.ErrnoException {
104
+ /** string code identifying the error, for example ‘EAUTH’ is returned when authentication */
105
+ code?: string | undefined;
106
+ /** the last response received from the server (if the error is caused by an error response from the server) */
107
+ response?: string | undefined;
108
+ /** the numeric response code of the response string (if available) */
109
+ responseCode?: number | undefined;
110
+ /** command which provoked an error */
111
+ command?: string | undefined;
112
+ }
113
+
114
+ interface SentMessageInfo {
115
+ /** an array of accepted recipient addresses. Normally this array should contain at least one address except when in LMTP mode. In this case the message itself might have succeeded but all recipients were rejected after sending the message. */
116
+ accepted: string[];
117
+ /** an array of rejected recipient addresses. This array includes both the addresses that were rejected before sending the message and addresses rejected after sending it if using LMTP */
118
+ rejected: string[];
119
+ /** if some recipients were rejected then this property holds an array of error objects for the rejected recipients */
120
+ rejectedErrors?: SMTPError[] | undefined;
121
+ /** the last response received from the server */
122
+ response: string;
123
+ /** how long was envelope prepared */
124
+ envelopeTime: number;
125
+ /** how long was send stream prepared */
126
+ messageTime: number;
127
+ /** how many bytes were streamed */
128
+ messageSize: number;
129
+ }
130
+
131
+ interface Options {
132
+ /** the hostname or IP address to connect to (defaults to ‘localhost’) */
133
+ host?: string | undefined;
134
+ /** the port to connect to (defaults to 25 or 465) */
135
+ port?: number | undefined;
136
+ /** defines authentication data */
137
+ auth?: AuthenticationType | undefined;
138
+ /** defines if the connection should use SSL (if true) or not (if false) */
139
+ secure?: boolean | undefined;
140
+ /** turns off STARTTLS support if true */
141
+ ignoreTLS?: boolean | undefined;
142
+ /** forces the client to use STARTTLS. Returns an error if upgrading the connection is not possible or fails. */
143
+ requireTLS?: boolean | undefined;
144
+ /** tries to use STARTTLS and continues normally if it fails */
145
+ opportunisticTLS?: boolean | undefined;
146
+ /** optional hostname of the client, used for identifying to the server */
147
+ name?: string | undefined;
148
+ /** the local interface to bind to for network connections */
149
+ localAddress?: string | undefined;
150
+ /** how many milliseconds to wait for the connection to establish */
151
+ connectionTimeout?: ms | undefined;
152
+ /** how many milliseconds to wait for the greeting after connection is established */
153
+ greetingTimeout?: ms | undefined;
154
+ /** how many milliseconds of inactivity to allow */
155
+ socketTimeout?: ms | undefined;
156
+ /** optional bunyan compatible logger instance. If set to true then logs to console. If value is not set or is false then nothing is logged */
157
+ logger?: shared.Logger | boolean | undefined;
158
+ /** if set to true, then logs SMTP traffic without message content */
159
+ transactionLog?: boolean | undefined;
160
+ /** if set to true, then logs SMTP traffic and message content, otherwise logs only transaction events */
161
+ debug?: boolean | undefined;
162
+ /** defines preferred authentication method, e.g. ‘PLAIN’ */
163
+ authMethod?: string | undefined;
164
+ /** defines additional options to be passed to the socket constructor, e.g. {rejectUnauthorized: true} */
165
+ tls?: tls.ConnectionOptions | undefined;
166
+ /** initialized socket to use instead of creating a new one */
167
+ socket?: net.Socket | undefined;
168
+ /** connected socket to use instead of creating and connecting a new one. If secure option is true, then socket is upgraded from plaintext to ciphertext */
169
+ connection?: net.Socket | undefined;
170
+ customAuth?: CustomAuthenticationHandlers | undefined;
171
+ }
172
+ }
173
+
174
+ declare class SMTPConnection extends EventEmitter {
175
+ options: SMTPConnection.Options;
176
+
177
+ logger: shared.Logger;
178
+
179
+ id: string;
180
+ stage: 'init' | 'connected';
181
+
182
+ secureConnection: boolean;
183
+ alreadySecured: boolean;
184
+
185
+ port: number;
186
+ host: string;
187
+
188
+ name: string;
189
+ /** Expose version nr, just for the reference */
190
+ version: string;
191
+
192
+ /** If true, then the user is authenticated */
193
+ authenticated: boolean;
194
+ /** If set to true, this instance is no longer active */
195
+ destroyed: boolean;
196
+ /** Defines if the current connection is secure or not. If not, STARTTLS can be used if available */
197
+ secure: boolean;
198
+
199
+ lastServerResponse: string | false;
200
+
201
+ /** The socket connecting to the server */
202
+ _socket: net.Socket;
203
+
204
+ constructor(options?: SMTPConnection.Options);
205
+
206
+ /** Creates a connection to a SMTP server and sets up connection listener */
207
+ connect(callback: (err?: SMTPConnection.SMTPError) => void): void;
208
+ /** Sends QUIT */
209
+ quit(): void;
210
+ /** Closes the connection to the server */
211
+ close(): void;
212
+ /** Authenticate user */
213
+ login(auth: SMTPConnection.AuthenticationCredentials | SMTPConnection.AuthenticationOAuth2 | SMTPConnection.Credentials, callback: (err?: SMTPConnection.SMTPError) => void): void;
214
+ /** Sends a message */
215
+ send(envelope: SMTPConnection.Envelope, message: string | Buffer | Readable, callback: (err: SMTPConnection.SMTPError | null, info: SMTPConnection.SentMessageInfo) => void): void;
216
+ /** Resets connection state */
217
+ reset(callback: (err?: SMTPConnection.SMTPError) => void): void;
218
+
219
+ addListener(event: 'connect' | 'end', listener: () => void): this;
220
+ addListener(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
221
+
222
+ emit(event: 'connect' | 'end'): boolean;
223
+ emit(event: 'error', error: Error): boolean;
224
+
225
+ listenerCount(event: 'connect' | 'end' | 'error'): number;
226
+
227
+ listeners(event: 'connect' | 'end'): Array<() => void>;
228
+ listeners(event: 'error'): Array<(err: SMTPConnection.SMTPError) => void>;
229
+
230
+ off(event: 'connect' | 'end', listener: () => void): this;
231
+ off(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
232
+
233
+ on(event: 'connect' | 'end', listener: () => void): this;
234
+ on(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
235
+
236
+ once(event: 'connect' | 'end', listener: () => void): this;
237
+ once(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
238
+
239
+ prependListener(event: 'connect' | 'end', listener: () => void): this;
240
+ prependListener(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
241
+
242
+ prependOnceListener(event: 'connect' | 'end', listener: () => void): this;
243
+ prependOnceListener(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
244
+
245
+ rawListeners(event: 'connect' | 'end'): Array<() => void>;
246
+ rawListeners(event: 'error'): Array<(err: SMTPConnection.SMTPError) => void>;
247
+
248
+ removeAllListener(event: 'connect' | 'end' | 'error'): this;
249
+
250
+ removeListener(event: 'connect' | 'end', listener: () => void): this;
251
+ removeListener(event: 'error', listener: (err: SMTPConnection.SMTPError) => void): this;
252
+ }
253
+
254
+ export = SMTPConnection;
@@ -0,0 +1,90 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+
5
+ import { Transport, TransportOptions } from '../..';
6
+ import * as shared from '../shared';
7
+
8
+ import Mail = require('../mailer');
9
+ import MailMessage = require('../mailer/mail-message');
10
+ import MimeNode = require('../mime-node');
11
+ import SMTPConnection = require('../smtp-connection');
12
+
13
+ declare namespace SMTPPool {
14
+ interface MailOptions extends Mail.Options {
15
+ auth?: SMTPConnection.AuthenticationType | undefined;
16
+ dsn?: SMTPConnection.DSNOptions | undefined;
17
+ }
18
+
19
+ interface Options extends MailOptions, TransportOptions, SMTPConnection.Options {
20
+ /** set to true to use pooled connections (defaults to false) instead of creating a new connection for every email */
21
+ pool: true;
22
+ service?: string | undefined;
23
+ getSocket?(options: Options, callback: (err: Error | null, socketOptions: any) => void): void; // TODO http.ClientRequest?
24
+ url?: string | undefined;
25
+ /** the count of maximum simultaneous connections to make against the SMTP server (defaults to 5) */
26
+ maxConnections?: number | undefined;
27
+ /** limits the message count to be sent using a single connection (defaults to 100). After maxMessages is reached the connection is dropped and a new one is created for the following messages */
28
+ maxMessages?: number | undefined;
29
+ /** defines the time measuring period in milliseconds (defaults to 1000, ie. to 1 second) for rate limiting */
30
+ rateDelta?: number | undefined;
31
+ /** limits the message count to be sent in rateDelta time. Once rateLimit is reached, sending is paused until the end of the measuring period. This limit is shared between connections, so if one connection uses up the limit, then other connections are paused as well. If rateLimit is not set then sending rate is not limited */
32
+ rateLimit?: number | undefined;
33
+ }
34
+
35
+ interface SentMessageInfo extends SMTPConnection.SentMessageInfo {
36
+ /** includes the envelope object for the message */
37
+ envelope: MimeNode.Envelope;
38
+ /** most transports should return the final Message-Id value used with this property */
39
+ messageId: string;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Creates a SMTP pool transport object for Nodemailer
45
+ */
46
+ declare class SMTPPool extends EventEmitter implements Transport<SMTPPool.SentMessageInfo> {
47
+ options: SMTPPool.Options;
48
+
49
+ mailer: Mail<SMTPPool.SentMessageInfo>;
50
+ logger: shared.Logger;
51
+
52
+ name: string;
53
+ version: string;
54
+
55
+ idling: boolean;
56
+
57
+ constructor(options?: SMTPPool.Options | string);
58
+
59
+ /** Placeholder function for creating proxy sockets. This method immediatelly returns without a socket */
60
+ getSocket(options: SMTPPool.Options, callback: (err: Error | null, socketOptions: any) => void): void;
61
+
62
+ /** Sends an e-mail using the selected settings */
63
+ send(mail: MailMessage<SMTPPool.SentMessageInfo>, callback: (err: Error | null, info: SMTPPool.SentMessageInfo) => void): void;
64
+
65
+ /** Closes all connections in the pool. If there is a message being sent, the connection is closed later */
66
+ close(): void;
67
+
68
+ /** Returns true if there are free slots in the queue */
69
+ isIdle(): boolean;
70
+
71
+ /** Verifies SMTP configuration */
72
+ verify(callback: (err: Error | null, success: true) => void): void;
73
+ verify(): Promise<true>;
74
+
75
+ addListener(event: 'idle', listener: () => void): this;
76
+
77
+ emit(event: 'idle'): boolean;
78
+
79
+ on(event: 'idle', listener: () => void): this;
80
+
81
+ once(event: 'idle', listener: () => void): this;
82
+
83
+ prependListener(event: 'idle', listener: () => void): this;
84
+
85
+ prependOnceListener(event: 'idle', listener: () => void): this;
86
+
87
+ listeners(event: 'idle'): Array<() => void>;
88
+ }
89
+
90
+ export = SMTPPool;
@@ -0,0 +1,66 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+
5
+ import MailMessage = require('../mailer/mail-message');
6
+ import * as shared from '../shared';
7
+
8
+ import SMTPPool = require('.');
9
+
10
+ /**
11
+ * Creates an element for the pool
12
+ */
13
+ declare class PoolResource extends EventEmitter {
14
+ pool: SMTPPool;
15
+ options: SMTPPool.Options;
16
+ logger: shared.Logger;
17
+
18
+ messages: number;
19
+ available: boolean;
20
+
21
+ constructor(pool: SMTPPool);
22
+
23
+ /** Initiates a connection to the SMTP server */
24
+ connect(callback: (err: Error | null, established: boolean) => void): void;
25
+ /** Sends an e-mail to be sent using the selected settings */
26
+ send(mail: MailMessage, callback: (err: Error | null, info: SMTPPool.SentMessageInfo) => void): void;
27
+ /** Closes the connection */
28
+ close(): void;
29
+
30
+ addListener(event: 'available', listener: () => void): this;
31
+ addListener(event: 'close', listener: () => void): this;
32
+ addListener(event: 'error', listener: (err: Error) => void): this;
33
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
34
+
35
+ emit(event: 'available'): boolean;
36
+ emit(event: 'close'): boolean;
37
+ emit(event: 'error', err: Error): boolean;
38
+ emit(event: string | symbol, ...args: any[]): boolean;
39
+
40
+ on(event: 'available', listener: () => void): this;
41
+ on(event: 'close', listener: () => void): this;
42
+ on(event: 'error', listener: (err: Error) => void): this;
43
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
44
+
45
+ once(event: 'available', listener: () => void): this;
46
+ once(event: 'close', listener: () => void): this;
47
+ once(event: 'error', listener: (err: Error) => void): this;
48
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
49
+
50
+ prependListener(event: 'available', listener: () => void): this;
51
+ prependListener(event: 'close', listener: () => void): this;
52
+ prependListener(event: 'error', listener: (err: Error) => void): this;
53
+ prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
54
+
55
+ prependOnceListener(event: 'available', listener: () => void): this;
56
+ prependOnceListener(event: 'close', listener: () => void): this;
57
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
58
+ prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
59
+
60
+ removeListener(event: 'available', listener: () => void): this;
61
+ removeListener(event: 'close', listener: () => void): this;
62
+ removeListener(event: 'error', listener: (err: Error) => void): this;
63
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
64
+ }
65
+
66
+ export = PoolResource;
@@ -0,0 +1,115 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+ import * as stream from 'stream';
5
+
6
+ import { Transport, TransportOptions } from '../..';
7
+ import * as shared from '../shared';
8
+
9
+ import Mail = require('../mailer');
10
+ import MailMessage = require('../mailer/mail-message');
11
+ import MimeNode = require('../mime-node');
12
+ import SMTPConnection = require('../smtp-connection');
13
+ import XOAuth2 = require('../xoauth2');
14
+
15
+ declare namespace SMTPTransport {
16
+ interface AuthenticationTypeCustom extends SMTPConnection.Credentials {
17
+ type: 'CUSTOM';
18
+ method: string;
19
+ }
20
+
21
+ interface AuthenticationTypeLogin {
22
+ type: 'LOGIN';
23
+ user: string;
24
+ credentials: SMTPConnection.Credentials;
25
+ method: string | false;
26
+ }
27
+
28
+ interface AuthenticationTypeOAuth2 {
29
+ type: 'OAUTH2';
30
+ user: string;
31
+ oauth2: XOAuth2;
32
+ method: 'XOAUTH2';
33
+ }
34
+
35
+ type AuthenticationType = AuthenticationTypeLogin | AuthenticationTypeOAuth2;
36
+
37
+ interface MailOptions extends Mail.Options {
38
+ auth?: SMTPConnection.AuthenticationType | undefined;
39
+ dsn?: SMTPConnection.DSNOptions | undefined;
40
+ }
41
+
42
+ interface Options extends MailOptions, TransportOptions, SMTPConnection.Options {
43
+ service?: string | undefined;
44
+ getSocket?(options: Options, callback: (err: Error | null, socketOptions: any) => void): void; // TODO http.ClientRequest?
45
+ url?: string | undefined;
46
+ }
47
+
48
+ interface SentMessageInfo {
49
+ /** includes the envelope object for the message */
50
+ envelope: MimeNode.Envelope;
51
+ /** most transports should return the final Message-Id value used with this property */
52
+ messageId: string;
53
+ accepted: Array<string | Mail.Address>;
54
+ rejected: Array<string | Mail.Address>;
55
+ pending: Array<string | Mail.Address>;
56
+ response: string;
57
+ }
58
+ }
59
+
60
+ declare class SMTPTransport extends EventEmitter implements Transport<SMTPTransport.SentMessageInfo> {
61
+ options: SMTPTransport.Options;
62
+
63
+ mailer: Mail<SMTPTransport.SentMessageInfo>;
64
+ logger: shared.Logger;
65
+
66
+ name: string;
67
+ version: string;
68
+
69
+ auth: SMTPTransport.AuthenticationType;
70
+
71
+ constructor(options: SMTPTransport.Options | string);
72
+
73
+ /** Placeholder function for creating proxy sockets. This method immediatelly returns without a socket */
74
+ getSocket(options: SMTPTransport.Options, callback: (err: Error | null, socketOptions: object) => void): void;
75
+
76
+ getAuth(
77
+ authOpts: SMTPConnection.AuthenticationTypeLogin | SMTPConnection.AuthenticationTypeOAuth2,
78
+ ): SMTPTransport.AuthenticationType;
79
+
80
+ /** Sends an e-mail using the selected settings */
81
+ send(
82
+ mail: MailMessage<SMTPTransport.SentMessageInfo>,
83
+ callback: (err: Error | null, info: SMTPTransport.SentMessageInfo) => void,
84
+ ): void;
85
+
86
+ /** Verifies SMTP configuration */
87
+ verify(callback: (err: Error | null, success: true) => void): void;
88
+ verify(): Promise<true>;
89
+
90
+ /** Releases resources */
91
+ close(): void;
92
+
93
+ addListener(event: 'close', listener: () => void): this;
94
+ addListener(event: 'error', listener: (err: Error) => void): this;
95
+
96
+ emit(event: 'close'): boolean;
97
+ emit(event: 'error', error: Error): boolean;
98
+
99
+ on(event: 'close', listener: () => void): this;
100
+ on(event: 'error', listener: (err: Error) => void): this;
101
+
102
+ once(event: 'close', listener: () => void): this;
103
+ once(event: 'error', listener: (err: Error) => void): this;
104
+
105
+ prependListener(event: 'close', listener: () => void): this;
106
+ prependListener(event: 'error', listener: (err: Error) => void): this;
107
+
108
+ prependOnceListener(event: 'close', listener: () => void): this;
109
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
110
+
111
+ listeners(event: 'close'): Array<() => void>;
112
+ listeners(event: 'error'): Array<(err: Error) => void>;
113
+ }
114
+
115
+ export = SMTPTransport;
@@ -0,0 +1,56 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+ import { Readable } from 'stream';
5
+
6
+ import { Transport, TransportOptions } from '../..';
7
+
8
+ import * as shared from '../shared';
9
+
10
+ import Mail = require('../mailer');
11
+ import MailMessage = require('../mailer/mail-message');
12
+ import MimeNode = require('../mime-node');
13
+
14
+ declare namespace StreamTransport {
15
+ type MailOptions = Mail.Options;
16
+
17
+ interface Options extends MailOptions, TransportOptions {
18
+ streamTransport: true;
19
+ /** if true, then returns the message as a Buffer object instead of a stream */
20
+ buffer?: boolean | undefined;
21
+ /** either ‘windows’ or ‘unix’ (default). Forces all newlines in the output to either use Windows syntax <CR><LF> or Unix syntax <LF> */
22
+ newline?: string | undefined;
23
+ }
24
+
25
+ interface SentMessageInfo {
26
+ /** an envelope object {from:‘address’, to:[‘address’]} */
27
+ envelope: MimeNode.Envelope;
28
+ /** the Message-ID header value */
29
+ messageId: string;
30
+ /** either stream (default) of buffer depending on the options */
31
+ message: Buffer | Readable;
32
+ accepted: Array<string | Mail.Address>;
33
+ rejected: Array<string | Mail.Address>;
34
+ pending: Array<string | Mail.Address>;
35
+ response: string;
36
+ }
37
+ }
38
+
39
+ declare class StreamTransport implements Transport<StreamTransport.SentMessageInfo> {
40
+ options: StreamTransport.Options;
41
+
42
+ logger: shared.Logger;
43
+ mailer: Mail<StreamTransport.SentMessageInfo>;
44
+
45
+ name: string;
46
+ version: string;
47
+
48
+ winbreak: boolean;
49
+
50
+ constructor(options: StreamTransport.Options);
51
+
52
+ /** Compiles a mailcomposer message and forwards it to handler that sends it */
53
+ send(mail: MailMessage<StreamTransport.SentMessageInfo>, callback: (err: Error | null, info: StreamTransport.SentMessageInfo) => void): void;
54
+ }
55
+
56
+ export = StreamTransport;
@@ -0,0 +1,6 @@
1
+ import SMTPConnection = require('../smtp-connection');
2
+
3
+ /** Resolves SMTP config for given key. Key can be a name (like 'Gmail'), alias (like 'Google Mail') or an email address (like 'test@googlemail.com'). */
4
+ declare function wellKnown(key: string): SMTPConnection.Options | false;
5
+
6
+ export = wellKnown;