stacosys/stacosys/core/mailer.py
2020-03-31 19:53:59 +02:00

67 lines
1.6 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import logging
import smtplib
from email.mime.text import MIMEText
import requests
from conf import config
from core import imap
from model.email import Email
logger = logging.getLogger(__name__)
def _open_mailbox():
return imap.Mailbox(
config.get(config.IMAP_HOST),
config.get_int(config.IMAP_PORT),
config.get_bool(config.IMAP_SSL),
config.get(config.IMAP_LOGIN),
config.get(config.IMAP_PASSWORD),
)
def fetch():
msgs = []
try:
with _open_mailbox() as mbox:
count = mbox.get_count()
for num in range(count):
msgs.append(mbox.fetch_message(num + 1))
except:
logger.exception("fetch mail exception")
return msgs
def send(to_email, subject, message):
# Create the container (outer) email message.
msg = MIMEText(message)
msg["Subject"] = subject
msg["To"] = to_email
msg["From"] = config.get(config.SMTP_LOGIN)
success = True
try:
s = smtplib.SMTP(config.get(config.SMTP_HOST), config.get_int(config.SMTP_PORT))
if config.get_bool(config.SMTP_STARTTLS):
s.starttls()
s.login(config.get(config.SMTP_LOGIN), config.get(config.SMTP_PASSWORD))
s.send_message(msg)
s.quit()
except:
logger.exception("send mail exception")
success = False
return success
def delete(id):
try:
with _open_mailbox() as mbox:
mbox.delete_message(id)
except:
logger.exception("delete mail exception")