mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2025-07-02 05:03:15 +07:00
Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
c550a7182d | |||
b75f3336d9 | |||
0e3a58617a | |||
3eb5d684cd | |||
02fea7e898 | |||
c2ca628a67 | |||
1733012f4d | |||
a5cba0b6c1 | |||
d4b4fe8144 | |||
67e2095a53 | |||
c6d4807c13 | |||
4586381ad5 | |||
b961a9185a | |||
ac180b7bd9 | |||
56a64662b4 | |||
296e585baf | |||
1cf295c810 | |||
f00590fc1a | |||
b27f0d4766 | |||
a4a1b1f1d5 | |||
ce64ae4df1 | |||
5b4b61f0c4 |
10
.github/workflows/test.yml
vendored
10
.github/workflows/test.yml
vendored
@ -6,6 +6,7 @@ jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
matrix:
|
||||
content_type:
|
||||
- text/plain
|
||||
@ -13,6 +14,7 @@ jobs:
|
||||
include:
|
||||
- content_type: text/plain
|
||||
body: file://README.md
|
||||
attachments: action.yml
|
||||
- content_type: text/html
|
||||
body: |
|
||||
<!DOCTYPE html>
|
||||
@ -22,8 +24,9 @@ jobs:
|
||||
<p>Paragraph</p>
|
||||
</body>
|
||||
</html>
|
||||
attachments: package.json,package-lock.json
|
||||
steps:
|
||||
- name: Checkout
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v1
|
||||
- name: Send mail
|
||||
uses: ./
|
||||
@ -34,6 +37,7 @@ jobs:
|
||||
password: ${{secrets.PASSWORD}}
|
||||
subject: ${{github.repository}}
|
||||
body: ${{matrix.body}}
|
||||
to: ${{github.event.pusher.email}},${{secrets.USERNAME}}
|
||||
to: ${{github.event.pusher.email}}
|
||||
from: github-actions
|
||||
content_type: ${{matrix.content_type}}
|
||||
content_type: ${{matrix.content_type}}
|
||||
attachments: ${{matrix.attachments}}
|
||||
|
@ -6,7 +6,7 @@ An action that simply sends a mail to multiple recipients.
|
||||
|
||||
```yaml
|
||||
- name: Send mail
|
||||
uses: dawidd6/action-send-mail@master
|
||||
uses: dawidd6/action-send-mail@v2
|
||||
with:
|
||||
server_address: smtp.gmail.com
|
||||
server_port: 465
|
||||
@ -18,7 +18,9 @@ An action that simply sends a mail to multiple recipients.
|
||||
# Read file contents as body:
|
||||
body: file://README.md
|
||||
to: obiwan@tatooine.com,yoda@dagobah.com
|
||||
from: Luke Skywalker
|
||||
from: Luke Skywalker # <user@example.com>
|
||||
# Optional content type (defaults to text/plain):
|
||||
content_type: text/html
|
||||
# Optional attachments:
|
||||
attachments: attachments.zip,git.diff,./dist/static/main.js
|
||||
```
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: Send email
|
||||
description: Send mail to multiple recipients
|
||||
description: Send an email to multiple recipients
|
||||
author: dawidd6
|
||||
branding:
|
||||
icon: mail
|
||||
@ -21,18 +21,21 @@ inputs:
|
||||
description: Subject of mail message
|
||||
required: true
|
||||
body:
|
||||
description: Body of mail message (might be a filename to read from)
|
||||
description: Body of mail message (might be a filename prefixed with file:// to read from)
|
||||
required: true
|
||||
to:
|
||||
description: Recipients mail addresses (separated with comma)
|
||||
required: true
|
||||
from:
|
||||
description: Full name of mail sender
|
||||
description: Full name of mail sender (might be with an email address specified in <>)
|
||||
required: true
|
||||
content_type:
|
||||
description: Content-Type HTTP header (text/html or text/plain)
|
||||
required: false
|
||||
default: text/plain
|
||||
attachments:
|
||||
description: Files that will be added to mail message attachments (separated with comma)
|
||||
required: false
|
||||
runs:
|
||||
using: node12
|
||||
main: main.js
|
||||
|
14
main.js
14
main.js
@ -11,6 +11,14 @@ function get_body(body) {
|
||||
return body
|
||||
}
|
||||
|
||||
function get_from(from, username) {
|
||||
if (from.match(/.+<.+@.+>/)) {
|
||||
return from
|
||||
}
|
||||
|
||||
return `"${from}" <${username}>`
|
||||
}
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
const server_address = core.getInput("server_address", { required: true })
|
||||
@ -22,6 +30,7 @@ async function main() {
|
||||
const to = core.getInput("to", { required: true })
|
||||
const from = core.getInput("from", { required: true })
|
||||
const content_type = core.getInput("content_type", { required: true })
|
||||
const attachments = core.getInput("attachments", { required: false })
|
||||
|
||||
const transport = nodemailer.createTransport({
|
||||
host: server_address,
|
||||
@ -34,11 +43,12 @@ async function main() {
|
||||
})
|
||||
|
||||
const info = await transport.sendMail({
|
||||
from: `"${from}" <${username}>`,
|
||||
from: get_from(from, username),
|
||||
to: to,
|
||||
subject: subject,
|
||||
text: content_type != "text/html" ? get_body(body) : undefined,
|
||||
html: content_type == "text/html" ? get_body(body) : undefined,
|
||||
attachments: attachments ? attachments.split(',').map(f => ({ path: f.trim() })) : undefined
|
||||
})
|
||||
|
||||
console.log(info)
|
||||
@ -47,4 +57,4 @@ async function main() {
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
main()
|
||||
|
Reference in New Issue
Block a user