mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2025-07-01 04:33:16 +07:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
3ce6fdc63e | |||
f1b626cfd4 | |||
0037ae15ac | |||
5b924828c0 | |||
a2f920a18b | |||
3082f5221c | |||
9210f61cf4 | |||
a5a673e774 |
10
README.md
10
README.md
@ -17,12 +17,16 @@ An action that simply sends a mail to multiple recipients.
|
||||
body: Build job of ${{github.repository}} completed successfully!
|
||||
# Read file contents as body:
|
||||
body: file://README.md
|
||||
to: obiwan@tatooine.com,yoda@dagobah.com
|
||||
to: obiwan@example.com,yoda@example.com
|
||||
from: Luke Skywalker # <user@example.com>
|
||||
# Optional carbon copy recipients
|
||||
cc: kyloren@starkiller.com,leia@alderaan.com
|
||||
cc: kyloren@example.com,leia@example.com
|
||||
# Optional blind carbon copy recipients
|
||||
bcc: r2d2@jakku.com,hansolo@milleniumfalcon.com
|
||||
bcc: r2d2@example.com,hansolo@example.com
|
||||
# Optional recipient of the email response
|
||||
reply_to: luke@example.com
|
||||
# Optional unsigned/invalid certificates allowance:
|
||||
ignore_cert: true
|
||||
# Optional content type (defaults to text/plain):
|
||||
content_type: text/html
|
||||
# Optional converting Markdown to HTML (set content_type to text/html too):
|
||||
|
@ -35,6 +35,12 @@ inputs:
|
||||
bcc:
|
||||
description: Blind carbon copy recipients (separated with comma)
|
||||
required: false
|
||||
reply_to:
|
||||
description: An email address that will appear on the Reply-To field
|
||||
required: false
|
||||
ignore_cert:
|
||||
description: Allow unsigned/invalid certificates
|
||||
required: false
|
||||
content_type:
|
||||
description: Content-Type HTTP header (text/html or text/plain)
|
||||
required: false
|
||||
|
8
main.js
8
main.js
@ -41,9 +41,11 @@ async function main() {
|
||||
const to = core.getInput("to", { required: true })
|
||||
const cc = core.getInput("cc", { required: false })
|
||||
const bcc = core.getInput("bcc", { required: false })
|
||||
const replyTo = core.getInput("reply_to", { required: false })
|
||||
const contentType = core.getInput("content_type", { required: true })
|
||||
const attachments = core.getInput("attachments", { required: false })
|
||||
const convertMarkdown = core.getInput("convert_markdown", { required: false })
|
||||
const ignoreCert = core.getInput("ignore_cert", { required: false })
|
||||
|
||||
const transport = nodemailer.createTransport({
|
||||
host: serverAddress,
|
||||
@ -52,7 +54,10 @@ async function main() {
|
||||
auth: {
|
||||
user: username,
|
||||
pass: password,
|
||||
}
|
||||
},
|
||||
tls: ignoreCert ? {
|
||||
rejectUnauthorized: false
|
||||
} : undefined
|
||||
})
|
||||
|
||||
const info = await transport.sendMail({
|
||||
@ -60,6 +65,7 @@ async function main() {
|
||||
to: to,
|
||||
cc: cc ? cc : undefined,
|
||||
bcc: bcc ? bcc : undefined,
|
||||
replyTo: replyTo ? replyTo : undefined,
|
||||
subject: subject,
|
||||
text: contentType != "text/html" ? getBody(body, convertMarkdown) : undefined,
|
||||
html: contentType == "text/html" ? getBody(body, convertMarkdown) : undefined,
|
||||
|
6
node_modules/.package-lock.json
generated
vendored
6
node_modules/.package-lock.json
generated
vendored
@ -112,9 +112,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nodemailer": {
|
||||
"version": "6.4.17",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.17.tgz",
|
||||
"integrity": "sha512-89ps+SBGpo0D4Bi5ZrxcrCiRFaMmkCt+gItMXQGzEtZVR3uAD3QAQIDoxTWnx3ky0Dwwy/dhFrQ+6NNGXpw/qQ==",
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz",
|
||||
"integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
|
10
node_modules/nodemailer/CHANGELOG.md
generated
vendored
10
node_modules/nodemailer/CHANGELOG.md
generated
vendored
@ -1,5 +1,15 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 6.5.0 2021-02-26
|
||||
|
||||
- Pass through textEncoding to subnodes
|
||||
- Added support for AWS SES v3 SDK
|
||||
- Fixed tests
|
||||
|
||||
## 6.4.18 2021-02-11
|
||||
|
||||
- Updated README
|
||||
|
||||
## 6.4.17 2020-12-11
|
||||
|
||||
- Allow mixing attachments with caendar alternatives
|
||||
|
2
node_modules/nodemailer/README.md
generated
vendored
2
node_modules/nodemailer/README.md
generated
vendored
@ -2,6 +2,8 @@
|
||||
|
||||
[](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/)
|
||||
|
1
node_modules/nodemailer/lib/mail-composer/index.js
generated
vendored
1
node_modules/nodemailer/lib/mail-composer/index.js
generated
vendored
@ -475,6 +475,7 @@ class MailComposer {
|
||||
} else {
|
||||
node = parentNode.createChild(element.contentType, {
|
||||
filename: element.filename,
|
||||
textEncoding: this.mail.textEncoding,
|
||||
disableUrlAccess: this.mail.disableUrlAccess,
|
||||
disableFileAccess: this.mail.disableFileAccess,
|
||||
normalizeHeaderKey: this.mail.normalizeHeaderKey
|
||||
|
2
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
2
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
@ -451,7 +451,7 @@ class MimeNode {
|
||||
transferEncoding = this._getTextEncoding(this.content) === 'Q' ? 'quoted-printable' : 'base64';
|
||||
} else {
|
||||
// we can not check content for a stream, so either use preferred encoding or fallback to QP
|
||||
transferEncoding = this.transferEncoding === 'B' ? 'base64' : 'quoted-printable';
|
||||
transferEncoding = this.textEncoding === 'B' ? 'base64' : 'quoted-printable';
|
||||
}
|
||||
} else if (!/^(multipart|message)\//i.test(contentType)) {
|
||||
transferEncoding = transferEncoding || 'base64';
|
||||
|
80
node_modules/nodemailer/lib/ses-transport/index.js
generated
vendored
80
node_modules/nodemailer/lib/ses-transport/index.js
generated
vendored
@ -239,36 +239,64 @@ class SESTransport extends EventEmitter {
|
||||
sesMessage[key] = mail.data.ses[key];
|
||||
});
|
||||
|
||||
this.ses.sendRawEmail(sesMessage, (err, data) => {
|
||||
if (err) {
|
||||
this.logger.error(
|
||||
{
|
||||
err,
|
||||
tnx: 'send'
|
||||
},
|
||||
'Send error for %s: %s',
|
||||
messageId,
|
||||
err.message
|
||||
);
|
||||
statObject.pending = false;
|
||||
return callback(err);
|
||||
let ses = (this.ses.aws ? this.ses.ses : this.ses) || {};
|
||||
let aws = this.ses.aws || {};
|
||||
|
||||
let getRegion = cb => {
|
||||
if (ses.config && typeof ses.config.region === 'function') {
|
||||
// promise
|
||||
return ses.config
|
||||
.region()
|
||||
.then(region => cb(null, region))
|
||||
.catch(err => cb(err));
|
||||
}
|
||||
return cb(null, (ses.config && ses.config.region) || 'us-east-1');
|
||||
};
|
||||
|
||||
getRegion((err, region) => {
|
||||
if (err || !region) {
|
||||
region = 'us-east-1';
|
||||
}
|
||||
|
||||
let region = (this.ses.config && this.ses.config.region) || 'us-east-1';
|
||||
if (region === 'us-east-1') {
|
||||
region = 'email';
|
||||
let sendPromise;
|
||||
if (typeof ses.send === 'function' && aws.SendRawEmailCommand) {
|
||||
// v3 API
|
||||
sendPromise = ses.send(new aws.SendRawEmailCommand(sesMessage));
|
||||
} else {
|
||||
// v2 API
|
||||
sendPromise = ses.sendRawEmail(sesMessage).promise();
|
||||
}
|
||||
|
||||
statObject.pending = false;
|
||||
callback(null, {
|
||||
envelope: {
|
||||
from: envelope.from,
|
||||
to: envelope.to
|
||||
},
|
||||
messageId: '<' + data.MessageId + (!/@/.test(data.MessageId) ? '@' + region + '.amazonses.com' : '') + '>',
|
||||
response: data.MessageId,
|
||||
raw
|
||||
});
|
||||
sendPromise
|
||||
.then(data => {
|
||||
if (region === 'us-east-1') {
|
||||
region = 'email';
|
||||
}
|
||||
|
||||
statObject.pending = false;
|
||||
callback(null, {
|
||||
envelope: {
|
||||
from: envelope.from,
|
||||
to: envelope.to
|
||||
},
|
||||
messageId: '<' + data.MessageId + (!/@/.test(data.MessageId) ? '@' + region + '.amazonses.com' : '') + '>',
|
||||
response: data.MessageId,
|
||||
raw
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
this.logger.error(
|
||||
{
|
||||
err,
|
||||
tnx: 'send'
|
||||
},
|
||||
'Send error for %s: %s',
|
||||
messageId,
|
||||
err.message
|
||||
);
|
||||
statObject.pending = false;
|
||||
callback(err);
|
||||
});
|
||||
});
|
||||
})
|
||||
);
|
||||
|
6
node_modules/nodemailer/lib/well-known/services.json
generated
vendored
6
node_modules/nodemailer/lib/well-known/services.json
generated
vendored
@ -148,6 +148,12 @@
|
||||
"secure": false
|
||||
},
|
||||
|
||||
"OhMySMTP": {
|
||||
"host": "smtp.ohmysmtp.com",
|
||||
"port": 587,
|
||||
"secure": false
|
||||
},
|
||||
|
||||
"Postmark": {
|
||||
"aliases": ["PostmarkApp"],
|
||||
"host": "smtp.postmarkapp.com",
|
||||
|
15
node_modules/nodemailer/package.json
generated
vendored
15
node_modules/nodemailer/package.json
generated
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nodemailer",
|
||||
"version": "6.4.17",
|
||||
"version": "6.5.0",
|
||||
"description": "Easy as cake e-mail sending from your Node.js applications",
|
||||
"main": "lib/nodemailer.js",
|
||||
"scripts": {
|
||||
@ -20,10 +20,10 @@
|
||||
},
|
||||
"homepage": "https://nodemailer.com/",
|
||||
"devDependencies": {
|
||||
"bunyan": "1.8.14",
|
||||
"chai": "4.2.0",
|
||||
"bunyan": "1.8.15",
|
||||
"chai": "4.3.0",
|
||||
"eslint-config-nodemailer": "1.2.0",
|
||||
"eslint-config-prettier": "7.0.0",
|
||||
"eslint-config-prettier": "8.1.0",
|
||||
"grunt": "1.3.0",
|
||||
"grunt-cli": "1.3.2",
|
||||
"grunt-eslint": "23.0.0",
|
||||
@ -31,15 +31,14 @@
|
||||
"libbase64": "1.2.1",
|
||||
"libmime": "5.0.0",
|
||||
"libqp": "1.1.0",
|
||||
"mocha": "8.2.1",
|
||||
"mocha": "8.3.0",
|
||||
"nodemailer-ntlm-auth": "1.0.1",
|
||||
"proxy": "1.0.2",
|
||||
"proxy-test-server": "1.0.0",
|
||||
"sinon": "9.2.1",
|
||||
"sinon": "9.2.4",
|
||||
"smtp-server": "3.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
}
|
||||
|
12
package-lock.json
generated
12
package-lock.json
generated
@ -121,9 +121,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nodemailer": {
|
||||
"version": "6.4.17",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.17.tgz",
|
||||
"integrity": "sha512-89ps+SBGpo0D4Bi5ZrxcrCiRFaMmkCt+gItMXQGzEtZVR3uAD3QAQIDoxTWnx3ky0Dwwy/dhFrQ+6NNGXpw/qQ==",
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz",
|
||||
"integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
@ -358,9 +358,9 @@
|
||||
}
|
||||
},
|
||||
"nodemailer": {
|
||||
"version": "6.4.17",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.17.tgz",
|
||||
"integrity": "sha512-89ps+SBGpo0D4Bi5ZrxcrCiRFaMmkCt+gItMXQGzEtZVR3uAD3QAQIDoxTWnx3ky0Dwwy/dhFrQ+6NNGXpw/qQ=="
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz",
|
||||
"integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw=="
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
|
Reference in New Issue
Block a user