1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00

Minor refactoring, added logic for sending mails to models.py.

This commit is contained in:
Jabrail Lezgintsev 2018-05-23 14:25:44 +03:00
parent 41dd2ec645
commit 304bebf147
3 changed files with 24 additions and 6 deletions

View file

@ -34,7 +34,7 @@ from django_mailbox import utils
from django_mailbox.signals import message_received
from django_mailbox.transports import Pop3Transport, ImapTransport, \
MaildirTransport, MboxTransport, BabylTransport, MHTransport, \
MMDFTransport, GmailImapTransport
MMDFTransport, GmailImapTransport, SMTPTransport
logger = logging.getLogger(__name__)
@ -213,6 +213,14 @@ class Mailbox(models.Model):
ssl=self.use_ssl
)
conn.connect(self.username, self.password)
elif self.type == 'smtp':
conn = SMTPTransport(
self.location,
port=self.port if self.port else None,
ssl=self.use_ssl,
tls=self.use_tls
)
conn.connect(self.username, self.password)
elif self.type == 'maildir':
conn = MaildirTransport(self.location)
elif self.type == 'mbox':
@ -420,6 +428,14 @@ class Mailbox(models.Model):
else:
self.save()
def send_mail(self, subject, to, body):
connection = self.get_connection()
if not connection:
return
connection.connect(self.username, self.password)
connection.send_message(subject, body, self.username, to)
return 'Success'
def __str__(self):
return self.name
@ -821,3 +837,4 @@ class MessageAttachment(models.Model):
class Meta:
verbose_name = _('Message attachment')
verbose_name_plural = _('Message attachments')

View file

@ -8,3 +8,4 @@ from django_mailbox.transports.babyl import BabylTransport
from django_mailbox.transports.mh import MHTransport
from django_mailbox.transports.mmdf import MMDFTransport
from django_mailbox.transports.gmail import GmailImapTransport
from django_mailbox.transports.smtp import SMTPTransport

View file

@ -6,15 +6,16 @@ from email.mime.text import MIMEText
# from django.conf import settings
# from django.core.mail import EmailMessage
from django_mailbox.transports.base import EmailTransport, MessageParseError
from django_mailbox.transports.base import EmailTransport
class SMTPTransport(EmailTransport):
def __init__(self,
hostname, port=None, ssl=False, tls=False):
def __init__(self, hostname, port=None,
ssl=False, tls=False):
self.hostname = hostname
self.port = port
self.tls = tls
self.server = None
if ssl:
self.transport = smtplib.SMTP_SSL
@ -30,7 +31,7 @@ class SMTPTransport(EmailTransport):
if self.tls:
self.server.starttls()
typ, msg = self.server.login(user=username, password=password)
_ = self.server.login(user=username, password=password)
# TODO Add abilities for html, image sending.
def send_message(self, subject, message, from_email, recipient_list):
@ -46,4 +47,3 @@ class SMTPTransport(EmailTransport):
self.server.sendmail(msg['From'], msg['To'], msg.as_string())
self.server.quit()