1
0
mirror of https://github.com/tektoncd/catalog.git synced 2024-10-18 02:19:26 +00:00

Send email via SMTP server task

This commit is contained in:
akihikokuroda 2020-02-14 19:20:41 +00:00 committed by tekton-robot
parent 82e2471db1
commit fb3a5e4a2b
3 changed files with 165 additions and 0 deletions

6
mail/OWNERS Normal file
View File

@ -0,0 +1,6 @@
approvers:
- akihikokuroda
- ncskier
reviewers:
- akihikokuroda
- ncskier

81
mail/README.md Normal file
View File

@ -0,0 +1,81 @@
Send a message via SMTP server
This task sends a simple email to receivers via SMTP server
## Install the Task and create a secret
```
kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/master/mail/sendmail.yaml
```
Create a secret that has the SMTP server information
* **url**: The IP address of the SMTP server
* **port**: The port number of the SMTP server
* **user**: User name for the SMTP server
* **password**: Password for the SMTP server
* **tls**: The tls enabled or not ("True" or "False")
Example server-secret.yaml
```
kind: Secret
apiVersion: v1
metadata:
name: server-secret
stringData:
url: "smtp.server.com"
port: "25"
user: "userid"
password: "password"
tls: "False"
```
Example kubectl command
```
kubectl apply -f server-secret.yaml
```
## Inputs
### Parameters
* **server**: The name of the secret that has the SMTP server information
* **subject**: Email subject (plain text)
* **body**: Email body (plain text)
* **sender**: Email sender email address
* **recipients**: Email recipients email addresses (space delimited)
## Usage
This TaskRun runs the Task to send an email to the receivers via the SMTP server.
```
apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
name: mail-taskrun
spec:
inputs:
params:
- name: server
value: server-secret
- name: subject
value: Hi, again!
- name: body
value: "Tekton email"
- name: sender
value: "<me@myserver.com>"
- name: recipients
value: "<him@hisserver.com> <her@herserver.com>"
taskRef:
name: sendmail
```

78
mail/sendmail.yaml Normal file
View File

@ -0,0 +1,78 @@
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: sendmail
spec:
inputs:
params:
- name: server
type: string
description: secret name for SMTP server information (url, port, password)
- name: subject
type: string
description: plain text email subject
- name: body
type: string
description: plain text email body
- name: sender
type: string
description: sender email address
- name: recipients
type: string
description: recipient email addresses (space delimited list)
steps:
- name: send
image: python:3.8-alpine
script: |
#!/usr/bin/env python3
import smtplib, ssl, os
port = os.getenv('PORT')
smtp_server = os.getenv('SERVER')
sender_email = "$(inputs.params.sender)"
receiver_emails = "$(inputs.params.recipients)"
user = os.getenv('USER')
password = os.getenv('PASSWORD')
tls = os.getenv('TLS')
message = f"""\
Subject: $(inputs.params.subject)
To: {receiver_emails}
From: {sender_email}
$(inputs.params.body)"""
print(message)
if tls == 'True':
context = ssl.create_default_context()
server = smtplib.SMTP_SSL(smtp_server, port, context=context)
else:
server = smtplib.SMTP(smtp_server, port)
if password != '':
server.login(user, password)
for receiver in receiver_emails.split(' '):
server.sendmail(sender_email, receiver, message)
server.quit()
env:
- name: USER
valueFrom:
secretKeyRef:
name: $(inputs.params.server)
key: user
- name: PASSWORD
valueFrom:
secretKeyRef:
name: $(inputs.params.server)
key: password
- name: TLS
valueFrom:
secretKeyRef:
name: $(inputs.params.server)
key: tls
- name: SERVER
valueFrom:
secretKeyRef:
name: $(inputs.params.server)
key: url
- name: PORT
valueFrom:
secretKeyRef:
name: $(inputs.params.server)
key: port