mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2025-08-14 01:24:42 +07:00
node_modules: update
This commit is contained in:
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(
|
||||
{
|
||||
|
Reference in New Issue
Block a user