-
-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a new version of the email app with a msg/eml standard parser t…
…hat handles attachments as files
- Loading branch information
Showing
8 changed files
with
996 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Base our app image off of the WALKOFF App SDK image | ||
FROM frikky/shuffle:app_sdk as base | ||
|
||
# We're going to stage away all of the bloat from the build tools so lets create a builder stage | ||
FROM base as builder | ||
|
||
# Install all alpine build tools needed for our pip installs | ||
RUN apk --no-cache add --update alpine-sdk libffi libffi-dev musl-dev openssl-dev | ||
|
||
# Install all of our pip packages in a single directory that we can copy to our base image later | ||
RUN mkdir /install | ||
WORKDIR /install | ||
COPY requirements.txt /requirements.txt | ||
RUN pip install --prefix="/install" -r /requirements.txt | ||
|
||
# Switch back to our base image and copy in all of our built packages and source code | ||
FROM base | ||
COPY --from=builder /install /usr/local | ||
COPY src /app | ||
|
||
# Install any binary dependencies needed in our final image | ||
# RUN apk --no-cache add --update my_binary_dependency | ||
|
||
# Finally, lets run our app! | ||
WORKDIR /app | ||
CMD python app.py --log-level DEBUG | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,280 @@ | ||
walkoff_version: 1.3.0 | ||
app_version: 1.3.0 | ||
name: email | ||
description: Email app | ||
tags: | ||
categories: | ||
- communication | ||
contact_info: | ||
name: "@frikkylikeme" | ||
url: https://github.com/frikky | ||
email: "frikky@shuffler.io" | ||
actions: | ||
- name: send_email_shuffle | ||
description: Send an email from Shuffle | ||
parameters: | ||
- name: apikey | ||
description: Your https://shuffler.io apikey | ||
multiline: false | ||
example: "https://shuffler.io apikey" | ||
required: true | ||
schema: | ||
type: string | ||
- name: recipients | ||
description: The recipients of the email | ||
multiline: false | ||
example: "test@example.com,frikky@shuffler.io" | ||
required: true | ||
schema: | ||
type: string | ||
- name: subject | ||
description: The subject to use | ||
multiline: false | ||
example: "SOS this is an alert :o" | ||
required: true | ||
schema: | ||
type: string | ||
- name: body | ||
description: The body to add to the email | ||
multiline: true | ||
example: "This is an email alert from Shuffler.io :)" | ||
required: true | ||
schema: | ||
type: string | ||
returns: | ||
schema: | ||
type: string | ||
- name: send_email_smtp | ||
description: Send an email with SMTP | ||
parameters: | ||
- name: username | ||
description: The SMTP login username | ||
multiline: false | ||
example: "frikky@shuffler.io" | ||
required: true | ||
schema: | ||
type: string | ||
- name: password | ||
description: The password to log in with SMTP | ||
multiline: false | ||
example: "******************" | ||
required: true | ||
schema: | ||
type: string | ||
- name: smtp_host | ||
description: The host of the SMTP | ||
multiline: false | ||
example: "smtp-mail.outlook.com" | ||
required: true | ||
schema: | ||
type: string | ||
- name: smtp_port | ||
description: The port to use for SMTP | ||
multiline: false | ||
example: "587" | ||
required: true | ||
schema: | ||
type: string | ||
- name: recipient | ||
description: The receiver(s) of the email | ||
multiline: false | ||
example: "frikky@shuffler.io,frikky@shuffler.io" | ||
required: true | ||
schema: | ||
type: string | ||
- name: subject | ||
description: The subject of the email | ||
multiline: false | ||
example: "This is a subject, hello there :)" | ||
required: true | ||
schema: | ||
type: string | ||
- name: body | ||
description: The body to add to the email | ||
multiline: true | ||
example: "This is an email alert from Shuffler.io :)" | ||
required: true | ||
schema: | ||
type: string | ||
- name: attachments | ||
description: Send files from shuffle as part of the email | ||
multiline: false | ||
example: "file_id1,file_id2,file_id3" | ||
required: false | ||
schema: | ||
type: string | ||
- name: ssl_verify | ||
description: Whether to use TLS or not | ||
example: "true" | ||
required: false | ||
options: | ||
- true | ||
- false | ||
schema: | ||
type: string | ||
- name: body_type | ||
description: The type of body to send. HTML by default | ||
example: "true" | ||
required: false | ||
options: | ||
- "html" | ||
- "plain" | ||
schema: | ||
type: string | ||
returns: | ||
schema: | ||
type: string | ||
- name: get_emails_imap | ||
description: Get emails using IMAP (e.g. imap.gmail.com / Outlook.office365.com) | ||
parameters: | ||
- name: username | ||
description: The SMTP login username | ||
multiline: false | ||
example: "frikky@shuffler.io" | ||
required: true | ||
schema: | ||
type: string | ||
- name: password | ||
description: The password to log in with SMTP | ||
multiline: false | ||
example: "******************" | ||
required: true | ||
schema: | ||
type: string | ||
- name: imap_server | ||
description: The imap server host | ||
multiline: false | ||
example: "Outlook.office365.com" | ||
required: true | ||
schema: | ||
type: string | ||
- name: foldername | ||
description: The folder to use, e.g. "inbox" | ||
multiline: false | ||
example: "inbox" | ||
required: true | ||
schema: | ||
type: string | ||
- name: amount | ||
description: Amount of emails to retrieve | ||
multiline: false | ||
example: "10" | ||
required: true | ||
schema: | ||
type: string | ||
- name: unread | ||
description: Retrieve just unread emails | ||
multiline: false | ||
options: | ||
- "false" | ||
- "true" | ||
required: true | ||
schema: | ||
type: bool | ||
- name: fields | ||
description: Comma separated list of fields to be exported | ||
multiline: false | ||
example: "body, header.subject, header.header.message-id" | ||
required: false | ||
schema: | ||
type: string | ||
- name: include_raw_body | ||
description: Include raw body in email export | ||
multiline: false | ||
options: | ||
- "true" | ||
- "false" | ||
required: true | ||
schema: | ||
type: bool | ||
- name: include_attachment_data | ||
description: Include raw attachments in email export | ||
multiline: false | ||
options: | ||
- "false" | ||
- "true" | ||
required: true | ||
schema: | ||
type: bool | ||
- name: upload_email_shuffle | ||
description: Upload email in shuffle, return uid | ||
multiline: false | ||
options: | ||
- "false" | ||
- "true" | ||
required: true | ||
schema: | ||
type: bool | ||
- name: upload_attachments_shuffle | ||
description: Upload attachments in shuffle, return uids | ||
multiline: false | ||
options: | ||
- "false" | ||
- "true" | ||
required: true | ||
schema: | ||
type: bool | ||
- name: ssl_verify | ||
description: Whether to use TLS or not | ||
example: "true" | ||
required: false | ||
options: | ||
- true | ||
- false | ||
schema: | ||
type: string | ||
- name: mark_as_read | ||
description: Mark email as read or not | ||
multiline: false | ||
options: | ||
- "false" | ||
- "true" | ||
required: false | ||
schema: | ||
type: bool | ||
- name: parse_email_file | ||
description: Takes a file from shuffle and analyzes it if it's a valid .eml or .msg | ||
parameters: | ||
- name: file_id | ||
description: file id | ||
required: true | ||
multiline: true | ||
example: 'adf5e3d0fd85633be17004735a0a119e' | ||
schema: | ||
type: string | ||
- name: extract_attachments | ||
description: Whether to extract the attachments straight into files | ||
required: true | ||
options: | ||
- true | ||
- false | ||
example: 'true' | ||
schema: | ||
type: string | ||
- name: parse_email_headers | ||
description: | ||
parameters: | ||
- name: email_headers | ||
description: Email headers | ||
required: true | ||
multiline: true | ||
example: 'Email Headers' | ||
schema: | ||
type: string | ||
returns: | ||
schema: | ||
type: string | ||
- name: analyze_headers | ||
description: | ||
parameters: | ||
- name: headers | ||
description: Email headers in any format | ||
required: true | ||
multiline: true | ||
schema: | ||
type: string | ||
returns: | ||
schema: | ||
type: string | ||
large_image: data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/hAytodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Nzg4QTJBMjVEMDI1MTFFN0EwQUVDODc5QjYyQkFCMUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Nzg4QTJBMjZEMDI1MTFFN0EwQUVDODc5QjYyQkFCMUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ODhBMkEyM0QwMjUxMUU3QTBBRUM4NzlCNjJCQUIxRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3ODhBMkEyNEQwMjUxMUU3QTBBRUM4NzlCNjJCQUIxRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoM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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
requests==2.25.1 | ||
glom==20.11.0 | ||
eml-parser==1.17.0 | ||
msg-parser==1.2.0 | ||
mail-parser==3.15.0 | ||
extract-msg==0.30.9 | ||
jsonpickle==2.0.0 | ||
|
Oops, something went wrong.