diff options
Diffstat (limited to 'service/pixelated/adapter/mail_service.py')
-rw-r--r-- | service/pixelated/adapter/mail_service.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py index 5a60d1bb..416c7bfc 100644 --- a/service/pixelated/adapter/mail_service.py +++ b/service/pixelated/adapter/mail_service.py @@ -16,6 +16,8 @@ import traceback import sys import os +import smtplib +from pixelated.bitmask_libraries.smtp import LeapSmtp from twisted.internet import defer from pixelated.bitmask_libraries.config import LeapConfig from pixelated.bitmask_libraries.provider import LeapProvider @@ -44,8 +46,27 @@ class MailService: def __init__(self, leap_session): self.leap_session = leap_session self.account = leap_session.account + self.user_email = leap_session.account_email() self.mailbox_name = 'INBOX' + def start(self): + try: + self.smtp_server = self._create_smtp_server() + self.smtp_client = self._create_smtp_client(self.smtp_server.smtp_info()) + except: + traceback.print_exc(file=sys.stdout) + raise + + def _create_smtp_server(self): + server = LeapSmtp(self.leap_session.provider, self.leap_session.nicknym.keymanager, self.leap_session.srp_session) + server.start() + return server + + def _create_smtp_client(self, smtp_info): + smtp_servername, smtp_port = smtp_info + client = smtplib.SMTP(smtp_servername, smtp_port) + return client + @property def mailbox(self): return PixelatedMailbox(self.account.getMailbox(self.mailbox_name)) @@ -98,6 +119,12 @@ class MailService: def mail(self, mail_id): return self.mailbox.mail(mail_id) + def send(self, mail): + _from = self.user_email + _to = mail.get_to() + + self.smtp_client.sendmail(_from, _to, mail.to_smtp_format(_from=_from)) + def all_tags(self): return self.mailbox.all_tags() |