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.signals import message_received
from django_mailbox.transports import Pop3Transport, ImapTransport, \ from django_mailbox.transports import Pop3Transport, ImapTransport, \
MaildirTransport, MboxTransport, BabylTransport, MHTransport, \ MaildirTransport, MboxTransport, BabylTransport, MHTransport, \
MMDFTransport, GmailImapTransport MMDFTransport, GmailImapTransport, SMTPTransport
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -213,6 +213,14 @@ class Mailbox(models.Model):
ssl=self.use_ssl ssl=self.use_ssl
) )
conn.connect(self.username, self.password) 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': elif self.type == 'maildir':
conn = MaildirTransport(self.location) conn = MaildirTransport(self.location)
elif self.type == 'mbox': elif self.type == 'mbox':
@ -420,6 +428,14 @@ class Mailbox(models.Model):
else: else:
self.save() 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): def __str__(self):
return self.name return self.name
@ -821,3 +837,4 @@ class MessageAttachment(models.Model):
class Meta: class Meta:
verbose_name = _('Message attachment') verbose_name = _('Message attachment')
verbose_name_plural = _('Message attachments') 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.mh import MHTransport
from django_mailbox.transports.mmdf import MMDFTransport from django_mailbox.transports.mmdf import MMDFTransport
from django_mailbox.transports.gmail import GmailImapTransport 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.conf import settings
# from django.core.mail import EmailMessage # from django.core.mail import EmailMessage
from django_mailbox.transports.base import EmailTransport, MessageParseError from django_mailbox.transports.base import EmailTransport
class SMTPTransport(EmailTransport): class SMTPTransport(EmailTransport):
def __init__(self, def __init__(self, hostname, port=None,
hostname, port=None, ssl=False, tls=False): ssl=False, tls=False):
self.hostname = hostname self.hostname = hostname
self.port = port self.port = port
self.tls = tls self.tls = tls
self.server = None
if ssl: if ssl:
self.transport = smtplib.SMTP_SSL self.transport = smtplib.SMTP_SSL
@ -30,7 +31,7 @@ class SMTPTransport(EmailTransport):
if self.tls: if self.tls:
self.server.starttls() 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. # TODO Add abilities for html, image sending.
def send_message(self, subject, message, from_email, recipient_list): 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.sendmail(msg['From'], msg['To'], msg.as_string())
self.server.quit() self.server.quit()