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:
parent
41dd2ec645
commit
304bebf147
3 changed files with 24 additions and 6 deletions
|
|
@ -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')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue