nodemailer 8.0.0 → 8.0.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [8.0.2](https://github.com/nodemailer/nodemailer/compare/v8.0.1...v8.0.2) (2026-03-09)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * merge fragmented display names with unquoted commas in addressparser ([fe27f7f](https://github.com/nodemailer/nodemailer/commit/fe27f7fd57f7587d897274438da2f628ad0ad7d9))
9
+
10
+ ## [8.0.1](https://github.com/nodemailer/nodemailer/compare/v8.0.0...v8.0.1) (2026-02-07)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * absorb TLS errors during socket teardown ([7f8dde4](https://github.com/nodemailer/nodemailer/commit/7f8dde41438c66b8311e888fa5f8c518fcaba6f1))
16
+ * absorb TLS errors during socket teardown ([381f628](https://github.com/nodemailer/nodemailer/commit/381f628d55e62bb3131bd2a452fa1ce00bc48aea))
17
+ * Add Gmail Workspace service configuration ([#1787](https://github.com/nodemailer/nodemailer/issues/1787)) ([dc97ede](https://github.com/nodemailer/nodemailer/commit/dc97ede417b3030b311771541b1f17f5ca76bcbf))
18
+
3
19
  ## [8.0.0](https://github.com/nodemailer/nodemailer/compare/v7.0.13...v8.0.0) (2026-02-04)
4
20
 
5
21
 
@@ -361,6 +361,20 @@ function addressparser(str, options) {
361
361
  }
362
362
  });
363
363
 
364
+ // Merge fragments from unquoted display names containing commas/semicolons.
365
+ // When "Joe Foo, PhD <joe@example.com>" is split on the comma, it produces
366
+ // [{name:"Joe Foo", address:""}, {name:"PhD", address:"joe@example.com"}].
367
+ // Detect this pattern and recombine: a name-only entry followed by an entry
368
+ // that has both a name and an address (from angle-bracket notation).
369
+ for (let i = parsedAddresses.length - 2; i >= 0; i--) {
370
+ let current = parsedAddresses[i];
371
+ let next = parsedAddresses[i + 1];
372
+ if (current.address === '' && current.name && !current.group && next.address && next.name && !next.group) {
373
+ next.name = current.name + ', ' + next.name;
374
+ parsedAddresses.splice(i, 1);
375
+ }
376
+ }
377
+
364
378
  if (options.flatten) {
365
379
  let addresses = [];
366
380
  let walkAddressList = list => {
@@ -15,6 +15,7 @@ const CONNECTION_TIMEOUT = 2 * 60 * 1000; // how much to wait for the connection
15
15
  const SOCKET_TIMEOUT = 10 * 60 * 1000; // how much to wait for socket inactivity before disconnecting the client
16
16
  const GREETING_TIMEOUT = 30 * 1000; // how much to wait after connection is established but SMTP greeting is not receieved
17
17
  const DNS_TIMEOUT = 30 * 1000; // how much to wait for resolveHostname
18
+ const TEARDOWN_NOOP = () => {}; // reusable no-op handler for absorbing errors during socket teardown
18
19
 
19
20
  /**
20
21
  * Generates a SMTP connection object
@@ -505,6 +506,9 @@ class SMTPConnection extends EventEmitter {
505
506
  socket.removeListener('end', this._onSocketEnd);
506
507
  socket.removeListener('error', this._onSocketError);
507
508
  socket.removeListener('error', this._onConnectionSocketError);
509
+ // Absorb errors that may fire during socket teardown (e.g. server
510
+ // sending cleartext after TLS shutdown triggers ERR_SSL_BAD_RECORD_TYPE)
511
+ socket.on('error', TEARDOWN_NOOP);
508
512
  socket[closeMethod]();
509
513
  } catch (_E) {
510
514
  // just ignore
@@ -147,6 +147,14 @@
147
147
  "secure": true
148
148
  },
149
149
 
150
+ "GmailWorkspace": {
151
+ "description": "Gmail Workspace",
152
+ "aliases": ["Google Workspace Mail"],
153
+ "host": "smtp-relay.gmail.com",
154
+ "port": 465,
155
+ "secure": true
156
+ },
157
+
150
158
  "GMX": {
151
159
  "description": "GMX Mail",
152
160
  "domains": ["gmx.com", "gmx.net", "gmx.de"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodemailer",
3
- "version": "8.0.0",
3
+ "version": "8.0.2",
4
4
  "description": "Easy as cake e-mail sending from your Node.js applications",
5
5
  "main": "lib/nodemailer.js",
6
6
  "scripts": {
@@ -26,12 +26,12 @@
26
26
  },
27
27
  "homepage": "https://nodemailer.com/",
28
28
  "devDependencies": {
29
- "@aws-sdk/client-sesv2": "3.975.0",
29
+ "@aws-sdk/client-sesv2": "3.1004.0",
30
30
  "bunyan": "1.8.15",
31
- "c8": "10.1.3",
32
- "eslint": "9.39.2",
31
+ "c8": "11.0.0",
32
+ "eslint": "10.0.3",
33
33
  "eslint-config-prettier": "10.1.8",
34
- "globals": "17.1.0",
34
+ "globals": "17.4.0",
35
35
  "libbase64": "1.3.0",
36
36
  "libmime": "5.3.7",
37
37
  "libqp": "2.1.1",
@@ -39,7 +39,7 @@
39
39
  "prettier": "3.8.1",
40
40
  "proxy": "1.0.2",
41
41
  "proxy-test-server": "1.0.0",
42
- "smtp-server": "3.18.0"
42
+ "smtp-server": "3.18.1"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=6.0.0"