Skip to content

Commit

Permalink
🤘 Implementation for #59 to support username and password as optional (…
Browse files Browse the repository at this point in the history
…#60)



Co-authored-by: Dawid Dziurla <[email protected]>
  • Loading branch information
droidpl and dawidd6 committed Jun 14, 2021
1 parent 98b61f5 commit db36373
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 28 deletions.
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ Some features:
server_address: smtp.gmail.com
# Required mail server port:
server_port: 465
# Required mail server username:
# Optional (recommended): mail server username:
username: ${{secrets.MAIL_USERNAME}}
# Required mail server password:
# Optional (recommended) mail server password:
password: ${{secrets.MAIL_PASSWORD}}
# Required mail subject:
subject: Github Actions job result
Expand Down Expand Up @@ -62,3 +62,8 @@ Changes in Gmail settings may be necessary to get this action to work.
3. If the Gmail account you're trying to use in this Action is already 2FA (Two Factor Authentication) enabled, the 2FA password will need to be provided as well, which isn't included in the default template.
Users who have had problems have reported success by doing each of these three steps or by doing the first two steps and using a Gmail account that didn't have 2FA enabled.
### Unauthenticated login (username/password fields)
The parameters `username` and `password` are set as optional to support self-hosted runners access to on-premise infrastructure. If
you are accessing public email servers make sure you provide a username/password authentication through [GitHub Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets) to make the email delivery secure.
4 changes: 2 additions & 2 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ inputs:
required: true
username:
description: Authenticate as this user to SMTP server
required: true
required: false
password:
description: Authenticate with this password to SMTP server
required: true
required: false
subject:
description: Subject of mail message
required: true
Expand Down
22 changes: 13 additions & 9 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ async function main() {
try {
const serverAddress = core.getInput("server_address", { required: true })
const serverPort = core.getInput("server_port", { required: true })
const username = core.getInput("username", { required: true })
const password = core.getInput("password", { required: true })
const username = core.getInput("username")
const password = core.getInput("password")
const subject = core.getInput("subject", { required: true })
const from = core.getInput("from", { required: true })
const to = core.getInput("to", { required: true })
Expand All @@ -48,17 +48,21 @@ async function main() {
const convertMarkdown = core.getInput("convert_markdown", { required: false })
const ignoreCert = core.getInput("ignore_cert", { required: false })

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,
port: serverPort,
secure: secure ? true : serverPort == "465",
auth: {
auth: username && password ? {
user: username,
pass: password,
},
tls: ignoreCert ? {
pass: password
} : undefined,
port: serverPort,
secure: secure == "true" ? true : serverPort == "465",
tls: ignoreCert == "true" ? {
rejectUnauthorized: false
} : undefined
} : undefined,
})

const info = await transport.sendMail({
Expand Down
15 changes: 0 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,6 @@
{
"name": "action-send-mail",
"version": "1.0.0",
"description": "An action that simply sends a mail to multiple recipients.",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dawidd6/action-send-mail.git"
},
"author": "dawidd6",
"license": "MIT",
"bugs": {
"url": "https://github.com/dawidd6/action-send-mail/issues"
},
"homepage": "https://github.com/dawidd6/action-send-mail#readme",
"dependencies": {
"@actions/core": "^1.2.7",
"nodemailer": "^6.4.17",
Expand Down

0 comments on commit db36373

Please sign in to comment.