diff --git a/README.md b/README.md index a987060c..c33fe756 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,14 @@ Some features: # Optional proxy, NO_PROXY is honored too: SMTP_PROXY: http://proxy.example.test:3128 with: - # Specify connection via URL (replaces server_address, server_port, secure, + # Specify connection via URL (replaces server_address, server_port, # username and password) # # Format: # # * smtp://user:password@server:port - # * smtp+starttls://user:password@server:port + # * smtps://user:password@server:port (TLS, default port 465) + # * smtp+starttls://user:password@server:port (STARTTLS required, default port 587) connection_url: ${{secrets.MAIL_CONNECTION}} # Required mail server address if not connection_url: diff --git a/action.yml b/action.yml index ea0d3bb2..8d0fd64d 100644 --- a/action.yml +++ b/action.yml @@ -6,7 +6,7 @@ branding: color: blue inputs: connection_url: - description: Connection URL protocol://user:password@server:port, protocol can be smtp or smtp+starttls, replaces server_address, server_port, secure, username and password + description: Connection URL protocol://user:password@server:port, protocol can be smtp, smtps (TLS, default port 465) or smtp+starttls (STARTTLS required, default port 587), replaces server_address, server_port, username and password server_address: description: SMTP server address server_port: diff --git a/main.js b/main.js index 0819edaf..0bd9cc39 100644 --- a/main.js +++ b/main.js @@ -93,15 +93,13 @@ async function main() { try { let serverAddress = core.getInput("server_address"); let serverPort = core.getInput("server_port"); - let secure = core.getInput("secure"); - const requireTLS = core.getInput("require_tls", { required: false }); + let secure = core.getInput("secure") + ? core.getBooleanInput("secure") + : undefined; + let requireTLS = core.getInput("require_tls", { required: false }); let username = core.getInput("username"); let password = core.getInput("password"); - if (!secure) { - secure = serverPort === "465" ? "true" : "false"; - } - const connectionUrl = core.getInput("connection_url"); if (connectionUrl) { const url = new URL(connectionUrl); @@ -112,11 +110,15 @@ async function main() { ); case "smtp:": serverPort = "25"; - secure = "false"; + break; + case "smtps:": + serverPort = "465"; + secure = true; break; case "smtp+starttls:": - serverPort = "465"; - secure = "true"; + serverPort = "587"; + secure = false; + requireTLS = "true"; break; } if (url.hostname) { @@ -133,6 +135,10 @@ async function main() { } } + if (secure === undefined) { + secure = serverPort === "465"; + } + const subject = core.getInput("subject", { required: true }); const from = core.getInput("from", { required: true }); const to = core.getInput("to", { required: false }); @@ -196,7 +202,7 @@ async function main() { } : undefined, port: serverPort, - secure: secure === "true", + secure: secure, requireTLS: requireTLS === "true", tls: ignoreCert == "true"