diff --git a/README.md b/README.md index 71795b6d..1faa8581 100644 --- a/README.md +++ b/README.md @@ -16,20 +16,10 @@ Some features: - name: Send mail uses: dawidd6/action-send-mail@v3 with: - # Specify connection via URL (replaces server_address, server_port, secure, - # username and password) - # - # Format: - # - # * smtp://user:password@server:port - # * smtp+starttls://user:password@server:port - connection_url: ${{secrets.MAIL_CONNECTION}} - # Required mail server address if not connection_url: + # Required mail server address: server_address: smtp.gmail.com - # Server port, default 25: + # Required mail server port: server_port: 465 - # Optional whether this connection use TLS (default is true if server_port is 465) - secure: true # Optional (recommended): mail server username: username: ${{secrets.MAIL_USERNAME}} # Optional (recommended) mail server password: @@ -40,6 +30,8 @@ Some features: to: obiwan@example.com,yoda@example.com # Required sender full name (address can be skipped): from: Luke Skywalker # + # Optional whether this connection use TLS (default is true if server_port is 465) + secure: true # Optional plain body: body: Build job of ${{github.repository}} completed successfully! # Optional HTML body read from file: diff --git a/action.yml b/action.yml index c1ed6faf..33593b32 100644 --- a/action.yml +++ b/action.yml @@ -5,19 +5,18 @@ branding: icon: mail 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 server_address: description: SMTP server address + required: true server_port: description: SMTP server port - default: "25" - secure: - description: Whether this connection use TLS (default is true if server_port is 465) + required: true username: description: Authenticate as this user to SMTP server + required: false password: description: Authenticate with this password to SMTP server + required: false subject: description: Subject of mail message required: true @@ -27,6 +26,9 @@ inputs: from: description: Full name of mail sender (might be with an email address specified in <>) required: true + secure: + description: Whether this connection use TLS (default is true if server_port is 465) + required: false body: description: Body of mail message (might be a filename prefixed with file:// to read from) required: false diff --git a/main.js b/main.js index d6485470..3d2e1ace 100644 --- a/main.js +++ b/main.js @@ -39,48 +39,14 @@ async function getAttachments(attachments) { async function main() { try { - let serverAddress = core.getInput("server_address") - let serverPort = core.getInput("server_port") - let secure = core.getInput("secure") - let username = core.getInput("username") - let password = core.getInput("password") - - if (!secure) { - secure = serverPort === "465" - } - - const connectionUrl = core.getInput("connection_url") - if (connectionUrl) { - const url = new URL(connectionUrl) - switch (url.protocol) { - default: - throw new Error(`Unsupported connection protocol '${url.protocol}'`); - case "smtp:": - serverPort = "25"; - secure = "false" - break; - case "smtp+starttls:": - serverPort = "465"; - secure = "true" - break; - } - if (url.hostname) { - serverAddress = url.hostname - } - if (url.port) { - serverPort = url.port - } - if (url.username) { - username = unescape(url.username) - } - if (url.password) { - password = unescape(url.password) - } - } - + const serverAddress = core.getInput("server_address", { required: true }) + const serverPort = core.getInput("server_port", { 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 }) + const secure = core.getInput("secure", { required: false }) const body = core.getInput("body", { required: false }) const htmlBody = core.getInput("html_body", { required: false }) const cc = core.getInput("cc", { required: false }) @@ -92,10 +58,6 @@ async function main() { const ignoreCert = core.getInput("ignore_cert", { required: false }) const priority = core.getInput("priority", { required: false }) - if (!serverAddress) { - throw new Error("Server address must be specified"); - } - 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.") } @@ -107,7 +69,7 @@ async function main() { pass: password } : undefined, port: serverPort, - secure: secure == "true", + secure: secure == "true" ? true : serverPort == "465", tls: ignoreCert == "true" ? { rejectUnauthorized: false } : undefined,