mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2025-09-08 05:44:04 +07:00
node_modules: update
This commit is contained in:
9
node_modules/nodemailer/CHANGELOG.md
generated
vendored
9
node_modules/nodemailer/CHANGELOG.md
generated
vendored
@ -1,5 +1,14 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 6.6.1 2021-05-23
|
||||
|
||||
- Fixed address formatting issue where newlines in an email address, if provided via address object, were not properly removed. Reported by tmazeika (#1289)
|
||||
|
||||
## 6.6.0 2021-04-28
|
||||
|
||||
- Added new option `newline` for MailComposer
|
||||
- aws ses connection verification (Ognjen Jevremovic)
|
||||
|
||||
## 6.5.0 2021-02-26
|
||||
|
||||
- Pass through textEncoding to subnodes
|
||||
|
6
node_modules/nodemailer/README.md
generated
vendored
6
node_modules/nodemailer/README.md
generated
vendored
@ -2,8 +2,6 @@
|
||||
|
||||
[](https://nodemailer.com/about/)
|
||||
|
||||
> Sponsored by [Forward Email](https://forwardemail.net/?ref=nodemailer) – free email forwarding + custom domains + 100% open-source!
|
||||
|
||||
Send e-mails from Node.js – easy as cake! 🍰✉️
|
||||
|
||||
[](https://nodemailer.com/about/)
|
||||
@ -30,8 +28,8 @@ Check your firewall settings. Timeout usually occurs when you try to open a conn
|
||||
|
||||
#### I get TLS errors
|
||||
|
||||
* If you are running the code in your own machine, then check your antivirus settings. Antiviruses often mess around with email ports usage. Node.js might not recognize the MITM cert your antivirus is using.
|
||||
* Latest Node versions allow only TLS versions 1.2 and higher, some servers might still use TLS 1.1 or lower. Check Node.js docs how to get correct TLS support for your app.
|
||||
- If you are running the code in your own machine, then check your antivirus settings. Antiviruses often mess around with email ports usage. Node.js might not recognize the MITM cert your antivirus is using.
|
||||
- Latest Node versions allow only TLS versions 1.2 and higher, some servers might still use TLS 1.1 or lower. Check Node.js docs how to get correct TLS support for your app.
|
||||
|
||||
#### I have a different problem
|
||||
|
||||
|
26
node_modules/nodemailer/lib/mail-composer/index.js
generated
vendored
26
node_modules/nodemailer/lib/mail-composer/index.js
generated
vendored
@ -31,7 +31,7 @@ class MailComposer {
|
||||
|
||||
// Compose MIME tree
|
||||
if (this.mail.raw) {
|
||||
this.message = new MimeNode().setRaw(this.mail.raw);
|
||||
this.message = new MimeNode('message/rfc822', { newline: this.mail.newline }).setRaw(this.mail.raw);
|
||||
} else if (this._useMixed) {
|
||||
this.message = this._createMixed();
|
||||
} else if (this._useAlternative) {
|
||||
@ -345,13 +345,15 @@ class MailComposer {
|
||||
boundaryPrefix: this.mail.boundaryPrefix,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
} else {
|
||||
node = parentNode.createChild('multipart/mixed', {
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
}
|
||||
|
||||
@ -391,13 +393,15 @@ class MailComposer {
|
||||
boundaryPrefix: this.mail.boundaryPrefix,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
} else {
|
||||
node = parentNode.createChild('multipart/alternative', {
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
}
|
||||
|
||||
@ -428,13 +432,15 @@ class MailComposer {
|
||||
boundaryPrefix: this.mail.boundaryPrefix,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
} else {
|
||||
node = parentNode.createChild('multipart/related; type="text/html"', {
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
}
|
||||
|
||||
@ -470,7 +476,8 @@ class MailComposer {
|
||||
boundaryPrefix: this.mail.boundaryPrefix,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
} else {
|
||||
node = parentNode.createChild(element.contentType, {
|
||||
@ -478,7 +485,8 @@ class MailComposer {
|
||||
textEncoding: this.mail.textEncoding,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey,
|
||||
newline: this.mail.newline
|
||||
});
|
||||
}
|
||||
|
||||
|
51
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
51
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
@ -16,6 +16,9 @@ const addressparser = require('../addressparser');
|
||||
const fetch = require('../fetch');
|
||||
const LastNewline = require('./last-newline');
|
||||
|
||||
const LeWindows = require('./le-windows');
|
||||
const LeUnix = require('./le-unix');
|
||||
|
||||
/**
|
||||
* Creates a new mime tree node. Assumes 'multipart/*' as the content type
|
||||
* if it is a branch, anything else counts as leaf. If rootNode is missing from
|
||||
@ -92,6 +95,11 @@ class MimeNode {
|
||||
*/
|
||||
this.hostname = options.hostname;
|
||||
|
||||
/**
|
||||
* If set to 'win' then uses \r\n, if 'linux' then \n. If not set (or `raw` is used) then newlines are kept as is.
|
||||
*/
|
||||
this.newline = options.newline;
|
||||
|
||||
/**
|
||||
* An array for possible child nodes
|
||||
*/
|
||||
@ -626,6 +634,15 @@ class MimeNode {
|
||||
outputStream = transform(outputStream);
|
||||
}
|
||||
|
||||
if (this.newline) {
|
||||
const winbreak = ['win', 'windows', 'dos', '\r\n'].includes(this.newline.toString().toLowerCase());
|
||||
const newlineTransform = winbreak ? new LeWindows() : new LeUnix();
|
||||
|
||||
const stream = outputStream.pipe(newlineTransform);
|
||||
outputStream.on('error', err => stream.emit('error', err));
|
||||
return stream;
|
||||
}
|
||||
|
||||
return outputStream;
|
||||
}
|
||||
|
||||
@ -1130,9 +1147,9 @@ class MimeNode {
|
||||
address.address = this._normalizeAddress(address.address);
|
||||
|
||||
if (!address.name) {
|
||||
values.push(address.address);
|
||||
values.push(address.address.indexOf(' ') >= 0 ? `<${address.address}>` : `${address.address}`);
|
||||
} else if (address.name) {
|
||||
values.push(this._encodeAddressName(address.name) + ' <' + address.address + '>');
|
||||
values.push(`${this._encodeAddressName(address.name)} <${address.address}>`);
|
||||
}
|
||||
|
||||
if (address.address) {
|
||||
@ -1141,9 +1158,8 @@ class MimeNode {
|
||||
}
|
||||
}
|
||||
} else if (address.group) {
|
||||
values.push(
|
||||
this._encodeAddressName(address.name) + ':' + (address.group.length ? this._convertAddresses(address.group, uniqueList) : '').trim() + ';'
|
||||
);
|
||||
let groupListAddresses = (address.group.length ? this._convertAddresses(address.group, uniqueList) : '').trim();
|
||||
values.push(`${this._encodeAddressName(address.name)}:${groupListAddresses};`);
|
||||
}
|
||||
});
|
||||
|
||||
@ -1157,13 +1173,17 @@ class MimeNode {
|
||||
* @return {String} address string
|
||||
*/
|
||||
_normalizeAddress(address) {
|
||||
address = (address || '').toString().trim();
|
||||
address = (address || '')
|
||||
.toString()
|
||||
.replace(/[\x00-\x1F<>]+/g, ' ') // remove unallowed characters
|
||||
.trim();
|
||||
|
||||
let lastAt = address.lastIndexOf('@');
|
||||
if (lastAt < 0) {
|
||||
// Bare username
|
||||
return address;
|
||||
}
|
||||
|
||||
let user = address.substr(0, lastAt);
|
||||
let domain = address.substr(lastAt + 1);
|
||||
|
||||
@ -1172,7 +1192,24 @@ class MimeNode {
|
||||
// 'jõgeva.ee' will be converted to 'xn--jgeva-dua.ee'
|
||||
// non-unicode domains are left as is
|
||||
|
||||
return user + '@' + punycode.toASCII(domain.toLowerCase());
|
||||
let encodedDomain;
|
||||
|
||||
try {
|
||||
encodedDomain = punycode.toASCII(domain.toLowerCase());
|
||||
} catch (err) {
|
||||
// keep as is?
|
||||
}
|
||||
|
||||
if (user.indexOf(' ') >= 0) {
|
||||
if (user.charAt(0) !== '"') {
|
||||
user = '"' + user;
|
||||
}
|
||||
if (user.substr(-1) !== '"') {
|
||||
user = user + '"';
|
||||
}
|
||||
}
|
||||
|
||||
return `${user}@${encodedDomain}`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
10
node_modules/nodemailer/lib/sendmail-transport/index.js
generated
vendored
10
node_modules/nodemailer/lib/sendmail-transport/index.js
generated
vendored
@ -2,8 +2,6 @@
|
||||
|
||||
const spawn = require('child_process').spawn;
|
||||
const packageData = require('../../package.json');
|
||||
const LeWindows = require('./le-windows');
|
||||
const LeUnix = require('./le-unix');
|
||||
const shared = require('../shared');
|
||||
|
||||
/**
|
||||
@ -68,7 +66,6 @@ class SendmailTransport {
|
||||
let args;
|
||||
let sendmail;
|
||||
let returned;
|
||||
let transform;
|
||||
|
||||
const hasInvalidAddresses = []
|
||||
.concat(envelope.from || [])
|
||||
@ -187,10 +184,8 @@ class SendmailTransport {
|
||||
recipients.join(', ')
|
||||
);
|
||||
|
||||
transform = this.winbreak ? new LeWindows() : new LeUnix();
|
||||
let sourceStream = mail.message.createReadStream();
|
||||
|
||||
transform.once('error', err => {
|
||||
sourceStream.once('error', err => {
|
||||
this.logger.error(
|
||||
{
|
||||
err,
|
||||
@ -205,8 +200,7 @@ class SendmailTransport {
|
||||
callback(err);
|
||||
});
|
||||
|
||||
sourceStream.once('error', err => transform.emit('error', err));
|
||||
sourceStream.pipe(transform).pipe(sendmail.stdin);
|
||||
sourceStream.pipe(sendmail.stdin);
|
||||
} else {
|
||||
return callback(new Error('sendmail was not found'));
|
||||
}
|
||||
|
42
node_modules/nodemailer/lib/ses-transport/index.js
generated
vendored
42
node_modules/nodemailer/lib/ses-transport/index.js
generated
vendored
@ -3,7 +3,7 @@
|
||||
const EventEmitter = require('events');
|
||||
const packageData = require('../../package.json');
|
||||
const shared = require('../shared');
|
||||
const LeWindows = require('../sendmail-transport/le-windows');
|
||||
const LeWindows = require('../mime-node/le-windows');
|
||||
|
||||
/**
|
||||
* Generates a Transport object for AWS SES
|
||||
@ -309,6 +309,23 @@ class SESTransport extends EventEmitter {
|
||||
*/
|
||||
verify(callback) {
|
||||
let promise;
|
||||
let ses = (this.ses.aws ? this.ses.ses : this.ses) || {};
|
||||
let aws = this.ses.aws || {};
|
||||
|
||||
const sesMessage = {
|
||||
RawMessage: {
|
||||
// required
|
||||
Data: 'From: invalid@invalid\r\nTo: invalid@invalid\r\n Subject: Invalid\r\n\r\nInvalid'
|
||||
},
|
||||
Source: 'invalid@invalid',
|
||||
Destinations: ['invalid@invalid']
|
||||
};
|
||||
const cb = err => {
|
||||
if (err && err.code !== 'InvalidParameterValue') {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, true);
|
||||
};
|
||||
|
||||
if (!callback) {
|
||||
promise = new Promise((resolve, reject) => {
|
||||
@ -316,22 +333,13 @@ class SESTransport extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
this.ses.sendRawEmail(
|
||||
{
|
||||
RawMessage: {
|
||||
// required
|
||||
Data: 'From: invalid@invalid\r\nTo: invalid@invalid\r\n Subject: Invalid\r\n\r\nInvalid'
|
||||
},
|
||||
Source: 'invalid@invalid',
|
||||
Destinations: ['invalid@invalid']
|
||||
},
|
||||
err => {
|
||||
if (err && err.code !== 'InvalidParameterValue') {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, true);
|
||||
}
|
||||
);
|
||||
if (typeof ses.send === 'function' && aws.SendRawEmailCommand) {
|
||||
// v3 API
|
||||
ses.send(new aws.SendRawEmailCommand(sesMessage), cb);
|
||||
} else {
|
||||
// v2 API
|
||||
ses.sendRawEmail(sesMessage, cb).promise();
|
||||
}
|
||||
|
||||
return promise;
|
||||
}
|
||||
|
6
node_modules/nodemailer/lib/shared/index.js
generated
vendored
6
node_modules/nodemailer/lib/shared/index.js
generated
vendored
@ -327,7 +327,11 @@ module.exports.resolveContent = (data, key, callback) => {
|
||||
}
|
||||
// we can't stream twice the same content, so we need
|
||||
// to replace the stream object with the streaming result
|
||||
data[key] = value;
|
||||
if (data[key].content) {
|
||||
data[key].content = value;
|
||||
} else {
|
||||
data[key] = value;
|
||||
}
|
||||
callback(null, value);
|
||||
});
|
||||
} else if (/^https?:\/\//i.test(content.path || content.href)) {
|
||||
|
21
node_modules/nodemailer/lib/smtp-connection/index.js
generated
vendored
21
node_modules/nodemailer/lib/smtp-connection/index.js
generated
vendored
@ -873,16 +873,21 @@ class SMTPConnection extends EventEmitter {
|
||||
});
|
||||
|
||||
this.upgrading = true;
|
||||
this._socket = tls.connect(opts, () => {
|
||||
this.secure = true;
|
||||
this.upgrading = false;
|
||||
this._socket.on('data', this._onSocketData);
|
||||
// tls.connect is not an asynchronous function however it may still throw errors and requires to be wrapped with try/catch
|
||||
try {
|
||||
this._socket = tls.connect(opts, () => {
|
||||
this.secure = true;
|
||||
this.upgrading = false;
|
||||
this._socket.on('data', this._onSocketData);
|
||||
|
||||
socketPlain.removeListener('close', this._onSocketClose);
|
||||
socketPlain.removeListener('end', this._onSocketEnd);
|
||||
socketPlain.removeListener('close', this._onSocketClose);
|
||||
socketPlain.removeListener('end', this._onSocketEnd);
|
||||
|
||||
return callback(null, true);
|
||||
});
|
||||
return callback(null, true);
|
||||
});
|
||||
} catch (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
this._socket.on('error', this._onSocketError);
|
||||
this._socket.once('close', this._onSocketClose);
|
||||
|
9
node_modules/nodemailer/lib/stream-transport/index.js
generated
vendored
9
node_modules/nodemailer/lib/stream-transport/index.js
generated
vendored
@ -2,8 +2,6 @@
|
||||
|
||||
const packageData = require('../../package.json');
|
||||
const shared = require('../shared');
|
||||
const LeWindows = require('../sendmail-transport/le-windows');
|
||||
const LeUnix = require('../sendmail-transport/le-unix');
|
||||
|
||||
/**
|
||||
* Generates a Transport object for streaming
|
||||
@ -61,15 +59,10 @@ class StreamTransport {
|
||||
);
|
||||
|
||||
setImmediate(() => {
|
||||
let sourceStream;
|
||||
let stream;
|
||||
let transform;
|
||||
|
||||
try {
|
||||
transform = this.winbreak ? new LeWindows() : new LeUnix();
|
||||
sourceStream = mail.message.createReadStream();
|
||||
stream = sourceStream.pipe(transform);
|
||||
sourceStream.on('error', err => stream.emit('error', err));
|
||||
stream = mail.message.createReadStream();
|
||||
} catch (E) {
|
||||
this.logger.error(
|
||||
{
|
||||
|
16
node_modules/nodemailer/package.json
generated
vendored
16
node_modules/nodemailer/package.json
generated
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nodemailer",
|
||||
"version": "6.5.0",
|
||||
"version": "6.6.2",
|
||||
"description": "Easy as cake e-mail sending from your Node.js applications",
|
||||
"main": "lib/nodemailer.js",
|
||||
"scripts": {
|
||||
@ -21,22 +21,22 @@
|
||||
"homepage": "https://nodemailer.com/",
|
||||
"devDependencies": {
|
||||
"bunyan": "1.8.15",
|
||||
"chai": "4.3.0",
|
||||
"chai": "4.3.4",
|
||||
"eslint-config-nodemailer": "1.2.0",
|
||||
"eslint-config-prettier": "8.1.0",
|
||||
"grunt": "1.3.0",
|
||||
"grunt-cli": "1.3.2",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"grunt": "1.4.1",
|
||||
"grunt-cli": "1.4.3",
|
||||
"grunt-eslint": "23.0.0",
|
||||
"grunt-mocha-test": "0.13.3",
|
||||
"libbase64": "1.2.1",
|
||||
"libmime": "5.0.0",
|
||||
"libqp": "1.1.0",
|
||||
"mocha": "8.3.0",
|
||||
"mocha": "9.0.0",
|
||||
"nodemailer-ntlm-auth": "1.0.1",
|
||||
"proxy": "1.0.2",
|
||||
"proxy-test-server": "1.0.0",
|
||||
"sinon": "9.2.4",
|
||||
"smtp-server": "3.8.0"
|
||||
"sinon": "11.1.1",
|
||||
"smtp-server": "3.9.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
|
Reference in New Issue
Block a user