From db36373cbed0fba7d5e12c338b580277550bdba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20de=20Pedro=20L=C3=B3pez?= Date: Mon, 14 Jun 2021 20:04:27 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=98=20Implementation=20for=20#59=20to?= =?UTF-8?q?=20support=20username=20and=20password=20as=20optional=20(#60)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Dawid Dziurla --- README.md | 9 +++++++-- action.yml | 4 ++-- main.js | 22 +++++++++++++--------- package.json | 15 --------------- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 8099b96a..25da9dfe 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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. diff --git a/action.yml b/action.yml index bd87873b..4448b2e7 100644 --- a/action.yml +++ b/action.yml @@ -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 diff --git a/main.js b/main.js index d2cf4a5a..44c44909 100644 --- a/main.js +++ b/main.js @@ -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 }) @@ -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({ diff --git a/package.json b/package.json index 6e2cc961..706e5a7c 100644 --- a/package.json +++ b/package.json @@ -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",