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:
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:
+1 -1
View File
@@ -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:
+16 -10
View File
@@ -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"