5 Commits

Author SHA1 Message Date
2f26726c4f require file:// prefix in body if loading a file 2019-12-08 11:23:04 +01:00
ae69498bf4 README: mention latest change 2019-12-06 10:30:05 +01:00
f50066a2fe read body from file if specified so 2019-12-06 10:26:00 +01:00
445b6879ac main: format 2019-12-06 10:18:17 +01:00
6e749a80b9 entrypoint -> main 2019-11-30 20:19:41 +01:00
6 changed files with 54 additions and 37 deletions

View File

@ -8,6 +8,11 @@ on:
jobs:
main:
runs-on: ubuntu-latest
strategy:
matrix:
body:
- file://README.md
- Test of action completed successfully!
steps:
- name: Checkout
uses: actions/checkout@v1
@ -19,6 +24,6 @@ jobs:
username: ${{secrets.USERNAME}}
password: ${{secrets.PASSWORD}}
subject: ${{github.repository}}
body: Test of action completed successfully!
body: ${{matrix.body}}
to: ${{secrets.USERNAME}}
from: github-actions

View File

@ -1,5 +1,5 @@
FROM ruby:2.6-alpine
COPY entrypoint.rb /
COPY *.rb /
ENTRYPOINT ["/entrypoint.rb"]
ENTRYPOINT ["/main.rb"]

View File

@ -13,7 +13,10 @@ An action that simply sends a mail to multiple recipients.
username: ${{secrets.MAIL_USERNAME}}
password: ${{secrets.MAIL_PASSWORD}}
subject: Github Actions job result
# Literal body:
body: Build job of ${{github.repository}} completed successfully!
# Read file contents as body:
body: file://README.md
to: obiwan@tatooine.com,yoda@dagobah.com
from: Luke Skywalker
```

View File

@ -21,7 +21,7 @@ inputs:
description: Subject of mail message
required: true
body:
description: Body of mail message
description: Body of mail message (might be a filename to read from)
required: true
to:
description: Recipients mail addresses (separated with comma)

View File

@ -1,33 +0,0 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'net/smtp'
# Inputs
address = ENV["INPUT_SERVER_ADDRESS"]
port = ENV["INPUT_SERVER_PORT"]
username = ENV["INPUT_USERNAME"]
password = ENV["INPUT_PASSWORD"]
subject = ENV["INPUT_SUBJECT"]
body = ENV["INPUT_BODY"]
to = ENV["INPUT_TO"]
from = ENV["INPUT_FROM"]
# Message
message = <<EOM
Subject: #{subject}
From: #{from} <#{username}>
#{body}
EOM
# Send
begin
smtp = Net::SMTP.new(address, port.to_i)
smtp.enable_tls
smtp.start(address, username, password, :login)
smtp.send_message(message, username, to.split(","))
rescue StandardError => e
puts "Error: #{e.message}"
exit 1
end

42
main.rb Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'net/smtp'
# Inputs
address = ENV['INPUT_SERVER_ADDRESS']
port = ENV['INPUT_SERVER_PORT']
username = ENV['INPUT_USERNAME']
password = ENV['INPUT_PASSWORD']
subject = ENV['INPUT_SUBJECT']
body = ENV['INPUT_BODY']
to = ENV['INPUT_TO']
from = ENV['INPUT_FROM']
# Body
prefix = 'file://'
body = if body.start_with?(prefix)
path = body.delete_prefix(prefix)
File.read(path)
else
body
end
# Message
message = <<~END_OF_MESSAGE
Subject: #{subject}
From: #{from} <#{username}>
#{body}
END_OF_MESSAGE
# Send
begin
smtp = Net::SMTP.new(address, port.to_i)
smtp.enable_tls
smtp.start(address, username, password, :login)
smtp.send_message(message, username, to.split(','))
rescue StandardError => e
puts "Error: #{e.message}"
exit 1
end