[email] Add MDA script which passes mails to API
This commit is contained in:
parent
4c2d9e63c6
commit
31fbfbe8c4
46
kibicara/kibicara_mda.py
Normal file
46
kibicara/kibicara_mda.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# Copyright (C) 2020 by Maike <maike@systemli.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: 0BSD
|
||||||
|
|
||||||
|
import email.parser
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
from logging import getLogger
|
||||||
|
from kibicara.platforms.email.model import Email
|
||||||
|
|
||||||
|
|
||||||
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
# read mail from STDIN
|
||||||
|
mailbytes = bytes(sys.stdin.read())
|
||||||
|
|
||||||
|
# parse plaintext to email.EmailMessage object
|
||||||
|
myparser = email.parser.BytesParser()
|
||||||
|
mail = myparser.parsebytes(mailbytes)
|
||||||
|
|
||||||
|
# extract relevant data from mail
|
||||||
|
for part in mail.walk():
|
||||||
|
try:
|
||||||
|
text = part.get_body(('plain',))
|
||||||
|
if not text:
|
||||||
|
text = re.sub(r'<[^>]*>', '', part.get_body(('html',)))
|
||||||
|
if not text:
|
||||||
|
logger.error('No suitable message body')
|
||||||
|
exit(0)
|
||||||
|
except Exception:
|
||||||
|
logger.info("No Body in this message part", exc_info=True)
|
||||||
|
exit(0)
|
||||||
|
body = {
|
||||||
|
'text': text,
|
||||||
|
'to': mail['To'].lower(),
|
||||||
|
'author': mail['From'].lower(),
|
||||||
|
'secret': Email.secret
|
||||||
|
}
|
||||||
|
|
||||||
|
# POST request mit API-key und JSON-body an /api/email/messages/:
|
||||||
|
print("curl "
|
||||||
|
"-X POST http://localhost/api/email/messages/ "
|
||||||
|
"-H 'Content-Type: application/json' "
|
||||||
|
"-d " + json.dumps(body))
|
Loading…
Reference in a new issue