67 lines
1.6 KiB
Python
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")
|