mailparser 3.7.4 → 3.8.1

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.
@@ -6,32 +6,31 @@ on:
6
6
  permissions:
7
7
  contents: write
8
8
  pull-requests: write
9
+ issues: write
9
10
  id-token: write
10
11
 
11
12
  name: release
12
13
  jobs:
13
14
  release-please:
14
15
  runs-on: ubuntu-latest
16
+ outputs:
17
+ release_created: ${{ steps.release.outputs.release_created }}
15
18
  steps:
16
- - uses: google-github-actions/release-please-action@v3
19
+ - uses: googleapis/release-please-action@v4
17
20
  id: release
21
+
22
+ publish:
23
+ needs: release-please
24
+ if: ${{ needs.release-please.outputs.release_created }}
25
+ runs-on: ubuntu-latest
26
+ permissions:
27
+ contents: read
28
+ id-token: write
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+ - uses: actions/setup-node@v4
18
32
  with:
19
- release-type: node
20
- package-name: ${{vars.NPM_MODULE_NAME}}
21
- pull-request-title-pattern: 'chore${scope}: release ${version} [skip-ci]'
22
- # The logic below handles the npm publication:
23
- - uses: actions/checkout@v3
24
- # these if statements ensure that a publication only occurs when
25
- # a new release is created:
26
- if: ${{ steps.release.outputs.release_created }}
27
- - uses: actions/setup-node@v3
28
- with:
29
- node-version: 18
33
+ node-version: 24
30
34
  registry-url: 'https://registry.npmjs.org'
31
- if: ${{ steps.release.outputs.release_created }}
32
35
  - run: npm ci
33
- if: ${{ steps.release.outputs.release_created }}
34
36
  - run: npm publish --provenance --access public
35
- env:
36
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
37
- if: ${{ steps.release.outputs.release_created }}
@@ -0,0 +1,24 @@
1
+ name: 'Close stale issues and PRs'
2
+ on:
3
+ schedule:
4
+ - cron: '30 1 * * *'
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v8
11
+ with:
12
+ stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
13
+ stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
14
+ close-issue-message: 'This issue was closed because it has been stalled for 15 days with no activity.'
15
+ close-pr-message: 'This PR was closed because it has been stalled for 20 days with no activity.'
16
+ days-before-issue-stale: 30
17
+ days-before-pr-stale: 45
18
+ days-before-issue-close: 15
19
+ days-before-pr-close: 20
20
+ stale-issue-label: 'no-issue-activity'
21
+ exempt-issue-labels: 'pending,work-in-progress'
22
+ stale-pr-label: 'no-pr-activity'
23
+ exempt-pr-labels: 'awaiting-approval,work-in-progress'
24
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -8,13 +8,13 @@ jobs:
8
8
  test:
9
9
  strategy:
10
10
  matrix:
11
- node: [18.x, 20.x, 21.x]
11
+ node: [22.x, 24.x]
12
12
  os: [ubuntu-latest]
13
13
  runs-on: ${{ matrix.os }}
14
14
  steps:
15
- - uses: actions/checkout@v3
15
+ - uses: actions/checkout@v4
16
16
  - name: Use Node.js ${{ matrix.node }}
17
- uses: actions/setup-node@v3
17
+ uses: actions/setup-node@v4
18
18
  with:
19
19
  node-version: ${{ matrix.node }}
20
20
  - run: npm install
package/.ncurc.js CHANGED
@@ -1,9 +1,6 @@
1
+ 'use strict';
2
+
1
3
  module.exports = {
2
4
  upgrade: true,
3
- reject: [
4
- // api changes, check and fix
5
- 'eslint',
6
- 'grunt-eslint',
7
- 'eslint-config-prettier'
8
- ]
5
+ reject: []
9
6
  };
@@ -0,0 +1,3 @@
1
+ CHANGELOG.md
2
+ .release-please-manifest.json
3
+ node_modules
package/.prettierrc.js CHANGED
@@ -1,3 +1,5 @@
1
+ 'use strict';
2
+
1
3
  module.exports = {
2
4
  printWidth: 160,
3
5
  tabWidth: 4,
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "3.8.1"
3
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.8.1](https://github.com/nodemailer/mailparser/compare/mailparser-v3.8.0...mailparser-v3.8.1) (2025-11-05)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * trigger new build ([7f2eb78](https://github.com/nodemailer/mailparser/commit/7f2eb78eda722e369b532b836e02b631d2cbb31c))
9
+
10
+ ## [3.8.0](https://github.com/nodemailer/mailparser/compare/mailparser-v3.7.5...mailparser-v3.8.0) (2025-11-04)
11
+
12
+
13
+ ### Features
14
+
15
+ * **events:** Emit a new headerLines event to gain access the raw headers ([#364](https://github.com/nodemailer/mailparser/issues/364)) ([d33d7ec](https://github.com/nodemailer/mailparser/commit/d33d7ec4b8e32a4eb7a9a664cec5fdb545c274af))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * :arrow_up: update nodemailer dependency to resolve security issue GHSA-9h6g-pr28-7cqp ([#357](https://github.com/nodemailer/mailparser/issues/357)) ([8bc4225](https://github.com/nodemailer/mailparser/commit/8bc42251fca6f538ece599f0a5bebe09b0aeff4f))
21
+ * 150 ([919f69a](https://github.com/nodemailer/mailparser/commit/919f69a49eb1326431c27c7034050498ca504822))
22
+ * 272: Throw TypeError for invalid input. ([abd7e43](https://github.com/nodemailer/mailparser/commit/abd7e43d90e533921c13ed8044a892761ef0535d))
23
+ * 34, bump version ([09aa0bd](https://github.com/nodemailer/mailparser/commit/09aa0bd59c1a70229567ff830adfd44c01605c2f))
24
+ * bumped deps ([9a13f4e](https://github.com/nodemailer/mailparser/commit/9a13f4efca4b209a40f4d57d2edbd019706a82c7))
25
+ * Bumped deps ([bb9c014](https://github.com/nodemailer/mailparser/commit/bb9c014c061def565183205a3ba3d269680f8271))
26
+ * Bumped deps ([9e084f9](https://github.com/nodemailer/mailparser/commit/9e084f9f265ddcfbf8ad3a3e68fc0645d4eb9d1d))
27
+ * Bumped mailsplit to fix flowed parser ([da753e4](https://github.com/nodemailer/mailparser/commit/da753e45ab6d335429bbdb38c5457d04d893d05e))
28
+ * capture decoder end event to use on cleanup ([4e367f7](https://github.com/nodemailer/mailparser/commit/4e367f7fda2505b9edb8e195eb5b1a8e1d1531fc))
29
+ * **deploy:** added auto-deployment ([d6eb56f](https://github.com/nodemailer/mailparser/commit/d6eb56fe09fe8b415e5bbf2e53704f6788ca0fee))
30
+ * **deps:** Bumped deps ([db842ad](https://github.com/nodemailer/mailparser/commit/db842addd36e2fe94d0c4b466da80719a36f47ac))
31
+ * **deps:** Bumped deps to fix issue with missing whitespace ([92884d0](https://github.com/nodemailer/mailparser/commit/92884d0619efa77042ecc35fbc887e93a59e5a93))
32
+ * **deps:** Bumped Nodemailer to fix issue with long data URI's ([d24f96e](https://github.com/nodemailer/mailparser/commit/d24f96e1ff6becccf3ba7f10798481287e0c96b0))
33
+ * **deps:** Replaced 'punycode' with 'punycode.js' module ([4a15157](https://github.com/nodemailer/mailparser/commit/4a15157dc9a815aa0e756d9e6ae0e8631842c447))
34
+ * error on ks_c_5601-1987 ([89572e0](https://github.com/nodemailer/mailparser/commit/89572e000d815704378261c753f59442397b8564))
35
+ * Fix produced text address list string according to rfc 2822 ([#340](https://github.com/nodemailer/mailparser/issues/340)) ([6bae600](https://github.com/nodemailer/mailparser/commit/6bae600a3f4a0452ee7ca43634a11939de7bcc6d))
36
+ * handle simpleParser input stream error ([faf9fc5](https://github.com/nodemailer/mailparser/commit/faf9fc5d8a27c1f88b7a126782d84ce2fef4d4bd))
37
+ * **punycode:** Fixes [#355](https://github.com/nodemailer/mailparser/issues/355) Deprecation warning of the punycode module ([#356](https://github.com/nodemailer/mailparser/issues/356)) ([0f35330](https://github.com/nodemailer/mailparser/commit/0f35330c87d715d38e8c853ae6c2f64d098b971d))
38
+ * **simple-parser:** Buffer.from(string) default encode is utf-8,when input string‘s encode is gbk,result has some garbled ([633e436](https://github.com/nodemailer/mailparser/commit/633e4369c93dc5122c8c8bee0fd2b057761e1223))
39
+ * **test:** updated test matrix (18, 20, 21) ([a2ba9c2](https://github.com/nodemailer/mailparser/commit/a2ba9c236dcd7f990c9d53a386ffaa5b564181b3))
40
+
41
+ ## [3.7.5](https://github.com/nodemailer/mailparser/compare/v3.7.4...v3.7.5) (2025-10-09)
42
+
43
+
44
+ ### Bug Fixes
45
+
46
+ * bumped deps ([9a13f4e](https://github.com/nodemailer/mailparser/commit/9a13f4efca4b209a40f4d57d2edbd019706a82c7))
47
+
3
48
  ## [3.7.4](https://github.com/nodemailer/mailparser/compare/v3.7.3...v3.7.4) (2025-06-29)
4
49
 
5
50
 
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2020 - 2021 Andris Reinman
1
+ Copyright (c) 2020 - 2025 Andris Reinman
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const { FlatCompat } = require('@eslint/eslintrc');
4
+ const js = require('@eslint/js');
5
+
6
+ const compat = new FlatCompat({
7
+ baseDirectory: __dirname,
8
+ recommendedConfig: js.configs.recommended
9
+ });
10
+
11
+ module.exports = [
12
+ {
13
+ ignores: ['node_modules/**', 'CHANGELOG.md']
14
+ },
15
+ ...compat.extends('nodemailer', 'prettier'),
16
+ {
17
+ languageOptions: {
18
+ ecmaVersion: 2017,
19
+ sourceType: 'script'
20
+ },
21
+ rules: {
22
+ 'no-useless-concat': 0,
23
+ 'no-unused-vars': ['error', { caughtErrors: 'none' }],
24
+ indent: 'off',
25
+ quotes: 'off',
26
+ 'linebreak-style': 'off',
27
+ semi: 'off',
28
+ 'comma-dangle': 'off',
29
+ 'comma-style': 'off',
30
+ 'arrow-parens': 'off'
31
+ }
32
+ }
33
+ ];
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
- const mailsplit = require('mailsplit');
3
+ const mailsplit = require('@zone-eu/mailsplit');
4
4
  const libmime = require('libmime');
5
5
  const addressparser = require('nodemailer/lib/addressparser');
6
6
  const Transform = require('stream').Transform;
7
7
  const Splitter = mailsplit.Splitter;
8
+ const ChunkedPassthrough = mailsplit.ChunkedPassthrough;
8
9
  const punycode = require('punycode.js');
9
- const FlowedDecoder = require('mailsplit/lib/flowed-decoder');
10
+ const FlowedDecoder = require('@zone-eu/mailsplit/lib/flowed-decoder');
10
11
  const StreamHash = require('./stream-hash');
11
12
  const iconv = require('iconv-lite');
12
13
  const { htmlToText } = require('html-to-text');
@@ -129,7 +130,11 @@ class MailParser extends Transform {
129
130
  });
130
131
 
131
132
  this.options = config || {};
133
+ this.chunkedPassthrough = new ChunkedPassthrough();
132
134
  this.splitter = new Splitter(config);
135
+
136
+ this.chunkedPassthrough.pipe(this.splitter);
137
+
133
138
  this.finished = false;
134
139
  this.waitingEnd = false;
135
140
 
@@ -160,6 +165,10 @@ class MailParser extends Transform {
160
165
 
161
166
  this.decoder = this.getDecoder();
162
167
 
168
+ this.chunkedPassthrough.on('error', err => {
169
+ this.splitter.emit('error', err);
170
+ });
171
+
163
172
  this.splitter.on('readable', () => {
164
173
  if (this.reading) {
165
174
  return false;
@@ -250,8 +259,8 @@ class MailParser extends Transform {
250
259
  return done();
251
260
  }
252
261
 
253
- if (this.splitter.write(chunk) === false) {
254
- return this.splitter.once('drain', () => {
262
+ if (this.chunkedPassthrough.write(chunk) === false) {
263
+ return this.chunkedPassthrough.once('drain', () => {
255
264
  done();
256
265
  });
257
266
  } else {
@@ -260,7 +269,7 @@ class MailParser extends Transform {
260
269
  }
261
270
 
262
271
  _flush(done) {
263
- setImmediate(() => this.splitter.end());
272
+ setImmediate(() => this.chunkedPassthrough.end());
264
273
  if (this.finished) {
265
274
  return this.cleanup(done);
266
275
  }
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "mailparser",
3
- "version": "3.7.4",
3
+ "version": "3.8.1",
4
4
  "description": "Parse e-mails",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "test": "grunt",
8
+ "format": "prettier --write .",
8
9
  "update": "rm -rf node_modules package-lock.json && ncu -u && npm install"
9
10
  },
10
11
  "author": "Andris Reinman",
@@ -20,24 +21,27 @@
20
21
  "encoding-japanese": "2.2.0",
21
22
  "he": "1.2.0",
22
23
  "html-to-text": "9.0.5",
23
- "iconv-lite": "0.6.3",
24
+ "iconv-lite": "0.7.0",
24
25
  "libmime": "5.3.7",
25
26
  "linkify-it": "5.0.0",
26
- "mailsplit": "5.4.5",
27
- "nodemailer": "7.0.4",
27
+ "@zone-eu/mailsplit": "5.4.7",
28
+ "nodemailer": "7.0.10",
28
29
  "punycode.js": "2.3.1",
29
- "tlds": "1.259.0"
30
+ "tlds": "1.261.0"
30
31
  },
31
32
  "devDependencies": {
33
+ "@eslint/eslintrc": "^3.3.1",
34
+ "@eslint/js": "^9.39.1",
32
35
  "ajv": "8.17.1",
33
- "eslint": "8.57.0",
36
+ "eslint": "^9.39.1",
34
37
  "eslint-config-nodemailer": "1.2.0",
35
- "eslint-config-prettier": "9.1.0",
38
+ "eslint-config-prettier": "10.1.8",
36
39
  "grunt": "1.6.1",
37
40
  "grunt-cli": "1.5.0",
38
41
  "grunt-contrib-nodeunit": "5.0.0",
39
- "grunt-eslint": "24.3.0",
42
+ "grunt-eslint": "26.0.0",
40
43
  "iconv": "3.0.1",
44
+ "prettier": "^3.6.2",
41
45
  "random-message": "1.1.0"
42
46
  },
43
47
  "repository": {
@@ -0,0 +1,9 @@
1
+ {
2
+ "packages": {
3
+ ".": {
4
+ "release-type": "node",
5
+ "package-name": "mailparser",
6
+ "pull-request-title-pattern": "chore${scope}: release ${version} [skip-ci]"
7
+ }
8
+ }
9
+ }