Fix secure setting and fix smtp+starttls defaulting to the wrong port (#329)

* Auto-derive the secure setting from serverPort, after setting serverPort

* Breaking: Add smtps scheme, fix smtp+starttls to default to port 587

* Use getBooleanInput for secure
This commit is contained in:
polyfloyd authored and GitHub committed 2026-10-04 16:34:48 +02:00
1 parent 0635835dfc
commit c2c6302b92
3 files changed
+20 -13

No files matched your search

+3 -2
View File
@@ -19,13 +19,14 @@ Some features:
# Optional proxy, NO_PROXY is honored too: # Optional proxy, NO_PROXY is honored too:
SMTP_PROXY: http://proxy.example.test:3128 SMTP_PROXY: http://proxy.example.test:3128
with: with:
# Specify connection via URL (replaces server_address, server_port, secure, # Specify connection via URL (replaces server_address, server_port,
# username and password) # username and password)
# #
# Format: # Format:
# #
# * smtp://user:password@server:port # * 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}} connection_url: ${{secrets.MAIL_CONNECTION}}
# Required mail server address if not connection_url: # Required mail server address if not connection_url:
+1 -1
View File
@@ -6,7 +6,7 @@ branding:
color: blue color: blue
inputs: inputs:
connection_url: 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: server_address:
description: SMTP server address description: SMTP server address
server_port: server_port:
+16 -10
View File
@@ -93,15 +93,13 @@ async function main() {
try { try {
let serverAddress = core.getInput("server_address"); let serverAddress = core.getInput("server_address");
let serverPort = core.getInput("server_port"); let serverPort = core.getInput("server_port");
let secure = core.getInput("secure"); let secure = core.getInput("secure")
const requireTLS = core.getInput("require_tls", { required: false }); ? core.getBooleanInput("secure")
: undefined;
let requireTLS = core.getInput("require_tls", { required: false });
let username = core.getInput("username"); let username = core.getInput("username");
let password = core.getInput("password"); let password = core.getInput("password");
if (!secure) {
secure = serverPort === "465" ? "true" : "false";
}
const connectionUrl = core.getInput("connection_url"); const connectionUrl = core.getInput("connection_url");
if (connectionUrl) { if (connectionUrl) {
const url = new URL(connectionUrl); const url = new URL(connectionUrl);
@@ -112,11 +110,15 @@ async function main() {
); );
case "smtp:": case "smtp:":
serverPort = "25"; serverPort = "25";
secure = "false"; break;
case "smtps:":
serverPort = "465";
secure = true;
break; break;
case "smtp+starttls:": case "smtp+starttls:":
serverPort = "465"; serverPort = "587";
secure = "true"; secure = false;
requireTLS = "true";
break; break;
} }
if (url.hostname) { if (url.hostname) {
@@ -133,6 +135,10 @@ async function main() {
} }
} }
if (secure === undefined) {
secure = serverPort === "465";
}
const subject = core.getInput("subject", { required: true }); const subject = core.getInput("subject", { required: true });
const from = core.getInput("from", { required: true }); const from = core.getInput("from", { required: true });
const to = core.getInput("to", { required: false }); const to = core.getInput("to", { required: false });
@@ -196,7 +202,7 @@ async function main() {
} }
: undefined, : undefined,
port: serverPort, port: serverPort,
secure: secure === "true", secure: secure,
requireTLS: requireTLS === "true", requireTLS: requireTLS === "true",
tls: tls:
ignoreCert == "true" ignoreCert == "true"