17 Commits

Author SHA1 Message Date
2cea9617b0 build(deps): bump nodemailer from 6.9.12 to 6.9.13 (#204)
[ci skip]

Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.12 to 6.9.13.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.12...v6.9.13)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 09:17:59 +01:00
3c36016689 build(deps): bump nodemailer from 6.9.10 to 6.9.12 (#202)
[ci skip]

Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.10 to 6.9.12.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.10...v6.9.12)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-16 19:00:37 +01:00
b623fcf123 build(deps): bump nodemailer from 6.9.9 to 6.9.10 (#199)
[ci skip]
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.9 to 6.9.10.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.9...v6.9.10)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-23 08:59:35 +01:00
2afa768d34 Fix for issue #196 (#197) 2024-02-14 12:26:05 +01:00
eaa39a13cd build(deps): bump nodemailer from 6.9.8 to 6.9.9 (#195)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.8 to 6.9.9.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.8...v6.9.9)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 08:54:11 +01:00
4226df7daa Update to Node20 (#193) 2024-01-27 00:23:23 +01:00
97a10a20cc build(deps): bump @actions/core from 1.10.0 to 1.10.1 (#181)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.10.0 to 1.10.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

[ci skip]

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 09:09:27 +01:00
9767c2af4d build(deps): bump nodemailer from 6.9.1 to 6.9.8 (#191)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.9.1 to 6.9.8.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.9.1...v6.9.8)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

[ci skip]

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 09:09:02 +01:00
d6910da162 README: GitHub
[ci skip]
2024-01-06 13:49:07 +01:00
dc13c734ff Enable logging and debug of nodemailer (#190)
This should help A LOT to let people understand
why things go wrong in this action when talking to the mailhost
2024-01-05 18:40:18 +01:00
48476814b0 Made "to" optional (incase cc or bcc is provided) (#183)
* Added made to optional (incase cc or bcc is provided)

* updated action.yml
2023-09-27 08:49:06 +02:00
e3f3ba4f86 build(deps): bump actions/checkout from 3 to 4 (#179)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-05 08:47:40 +02:00
19516a4a58 fix #176 by removing useless warning message (#177) 2023-08-19 08:57:30 +02:00
3c0bbc53ef Support reading the subject from a file. (#173)
Allows dynamic subjects to be generated at action runtime
(e.g., "Foobar version 1.2.3 is released", where 1.2.3
is not known at action config time).

Leverages the existing file:// support for body, but renames
getBody to getText, in keeping with this expanded role.
2023-08-08 14:24:30 +02:00
6d8218d1d2 workflows: update checkout action 2023-04-25 09:17:22 +02:00
657e138a0a build(deps): bump nodemailer from 6.8.0 to 6.9.1 (#153)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.8.0 to 6.9.1.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.8.0...v6.9.1)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 09:15:30 +02:00
874d3db0a9 build(deps): bump @actions/glob from 0.2.1 to 0.4.0 (#152)
Bumps [@actions/glob](https://github.com/actions/toolkit/tree/HEAD/packages/glob) from 0.2.1 to 0.4.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/glob/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/glob)

---
updated-dependencies:
- dependency-name: "@actions/glob"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 09:14:28 +02:00
7 changed files with 104 additions and 59 deletions

View File

@ -30,7 +30,7 @@ jobs:
<p>Paragraph</p>
</body>
</html>
- subject: Plain body (Markdown)
- subject: file://testdata/subject.txt
convert_markdown: true
body: file://README.md
- subject: HTML body (Markdown)
@ -42,7 +42,7 @@ jobs:
html_body: file://README.md
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Send mail
uses: ./
with:
@ -63,7 +63,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Send mail
uses: ./
with:

View File

@ -1,4 +1,4 @@
# Send mail Github Action
# Send mail GitHub Action
An action that simply sends a mail to multiple recipients.
@ -60,6 +60,10 @@ Some features:
attachments: attachments.zip,git.diff,./dist/static/*.js
# Optional priority: 'high', 'normal' (default) or 'low'
priority: low
# Optional nodemailerlog: true/false
nodemailerlog: false
# Optional nodemailerdebug: true/false if true lognodem will also be set true
nodemailerdebug: false
```
## Troubleshooting

View File

@ -23,7 +23,7 @@ inputs:
required: true
to:
description: Recipients mail addresses (separated with comma)
required: true
required: false
from:
description: Full name of mail sender (might be with an email address specified in <>)
required: true
@ -57,6 +57,12 @@ inputs:
priority:
description: Set Priority level for the mail message to 'high', 'normal' (default) or 'low'
required: false
nodemailerlog:
description: Log option for nodemailer
required: false
nodemailerdebug:
description: Debug option for nodemailer
required: false
runs:
using: node16
using: node20
main: main.js

68
main.js
View File

@ -5,22 +5,22 @@ const fs = require("fs")
const showdown = require("showdown")
const path = require("path")
function getBody(bodyOrFile, convertMarkdown) {
let body = bodyOrFile
function getText(textOrFile, convertMarkdown) {
let text = textOrFile
// Read body from file
if (bodyOrFile.startsWith("file://")) {
const file = bodyOrFile.replace("file://", "")
body = fs.readFileSync(file, "utf8")
// Read text from file
if (textOrFile.startsWith("file://")) {
const file = textOrFile.replace("file://", "")
text = fs.readFileSync(file, "utf8")
}
// Convert Markdown to HTML
if (convertMarkdown) {
const converter = new showdown.Converter()
body = converter.makeHtml(body)
text = converter.makeHtml(text)
}
return body
return text
}
function getFrom(from, username) {
@ -37,6 +37,12 @@ async function getAttachments(attachments) {
return files.map(f => ({ filename: path.basename(f), path: f, cid: f.replace(/^.*[\\\/]/, '')}))
}
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function main() {
try {
let serverAddress = core.getInput("server_address")
@ -80,7 +86,7 @@ async function main() {
const subject = core.getInput("subject", { required: true })
const from = core.getInput("from", { required: true })
const to = core.getInput("to", { required: true })
const to = core.getInput("to", { required: false })
const body = core.getInput("body", { required: false })
const htmlBody = core.getInput("html_body", { required: false })
const cc = core.getInput("cc", { required: false })
@ -91,15 +97,18 @@ async function main() {
const convertMarkdown = core.getInput("convert_markdown", { required: false })
const ignoreCert = core.getInput("ignore_cert", { required: false })
const priority = core.getInput("priority", { required: false })
const nodemailerlog = core.getInput("nodemailerlog", { required: false })
const nodemailerdebug = core.getInput("nodemailerdebug", { required: false })
// if neither to, cc or bcc is provided, throw error
if (!to && !cc && !bcc) {
throw new Error("At least one of 'to', 'cc' or 'bcc' must be specified")
}
if (!serverAddress) {
throw new Error("Server address must be specified")
}
if (!username || !password) {
core.warning("Username and password not specified. You should only do this if you are using a self-hosted runner to access an on-premise mail server.")
}
const transport = nodemailer.createTransport({
host: serverAddress,
auth: username && password ? {
@ -111,22 +120,47 @@ async function main() {
tls: ignoreCert == "true" ? {
rejectUnauthorized: false
} : undefined,
logger: nodemailerdebug == "true" ? true : nodemailerlog,
debug: nodemailerdebug,
})
var i = 1;
while (true) {
try {
const info = await transport.sendMail({
from: getFrom(from, username),
to: to,
subject: subject,
subject: getText(subject, false),
cc: cc ? cc : undefined,
bcc: bcc ? bcc : undefined,
replyTo: replyTo ? replyTo : undefined,
inReplyTo: inReplyTo ? inReplyTo : undefined,
references: inReplyTo ? inReplyTo : undefined,
text: body ? getBody(body, false) : undefined,
html: htmlBody ? getBody(htmlBody, convertMarkdown) : undefined,
text: body ? getText(body, false) : undefined,
html: htmlBody ? getText(htmlBody, convertMarkdown) : undefined,
priority: priority ? priority : undefined,
attachments: attachments ? (await getAttachments(attachments)) : undefined,
})
});
break;
} catch (error) {
if (!error.message.includes("Try again later,")) {
core.setFailed(error.message)
break;
}
if (i > 10) {
core.setFailed(error.message)
break;
}
console.log("Received: " + error.message);
if (i < 2) {
console.log("Trying again in a minute...");
} else {
console.log("Trying again in " + i + " minutes...");
}
await sleep(i * 60000);
i++;
}
}
} catch (error) {
core.setFailed(error.message)
}

46
package-lock.json generated
View File

@ -6,27 +6,27 @@
"": {
"name": "action-send-mail",
"dependencies": {
"@actions/core": "^1.2.7",
"@actions/glob": "^0.2.1",
"nodemailer": "^6.7.8",
"@actions/core": "^1.10.1",
"@actions/glob": "^0.4.0",
"nodemailer": "^6.9.13",
"showdown": "^1.9.1"
}
},
"node_modules/@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/glob": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.2.1.tgz",
"integrity": "sha512-OqseGbxR8vVikg6rfdKST21GX3QYGq2Nz7/gX3UxZb2Mw1ujJ2S3U5CsYUvYHwxbYguU+HNhfE3930oo5nprXQ==",
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz",
"integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/core": "^1.9.1",
"minimatch": "^3.0.4"
}
},
@ -171,9 +171,9 @@
}
},
"node_modules/nodemailer": {
"version": "6.8.0",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.8.0.tgz",
"integrity": "sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ==",
"version": "6.9.13",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
"integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==",
"engines": {
"node": ">=6.0.0"
}
@ -341,20 +341,20 @@
},
"dependencies": {
"@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"requires": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"@actions/glob": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.2.1.tgz",
"integrity": "sha512-OqseGbxR8vVikg6rfdKST21GX3QYGq2Nz7/gX3UxZb2Mw1ujJ2S3U5CsYUvYHwxbYguU+HNhfE3930oo5nprXQ==",
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz",
"integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==",
"requires": {
"@actions/core": "^1.2.6",
"@actions/core": "^1.9.1",
"minimatch": "^3.0.4"
}
},
@ -472,9 +472,9 @@
}
},
"nodemailer": {
"version": "6.8.0",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.8.0.tgz",
"integrity": "sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ=="
"version": "6.9.13",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
"integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA=="
},
"p-limit": {
"version": "2.3.0",

View File

@ -2,9 +2,9 @@
"name": "action-send-mail",
"main": "main.js",
"dependencies": {
"@actions/core": "^1.2.7",
"@actions/glob": "^0.2.1",
"nodemailer": "^6.7.8",
"@actions/core": "^1.10.1",
"@actions/glob": "^0.4.0",
"nodemailer": "^6.9.13",
"showdown": "^1.9.1"
}
}

1
testdata/subject.txt vendored Normal file
View File

@ -0,0 +1 @@
Plain body (Markdown)