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

Added tests, refactoring

This commit is contained in:
Jabrail Lezgintsev 2018-05-23 16:49:26 +03:00
parent e3c57c3c14
commit 9bc97119e3
3 changed files with 41 additions and 18 deletions

View file

@ -8,12 +8,11 @@ class Command(BaseCommand):
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument('from', type=int, help='ID (pk) for the mailbox you want to use to send an e-mail') parser.add_argument('from', type=int, help='ID (pk) for the mailbox you want to use to send an e-mail')
parser.add_argument('to', help='E-mail address of recipient') parser.add_argument('to', type=str, help='E-mail address of recipient')
parser.add_argument('subject', help='Subject of letter') parser.add_argument('subject', type=str, help='Subject of letter')
parser.add_argument('body', help='Message') parser.add_argument('body', type=str, help='Message')
def handle(self, *args, **options): def handle(self, *args, **options):
from_email = options.get('from') from_email = options.get('from')
to = options.get('to') to = options.get('to')
subject = options.get('subject') subject = options.get('subject')
@ -23,5 +22,5 @@ class Command(BaseCommand):
self.stdout.write(self.style.WARNING("-"*36 + "\nFrom: %s \nTo: %s \nSubject: %s \nMessage: %s \n" % self.stdout.write(self.style.WARNING("-"*36 + "\nFrom: %s \nTo: %s \nSubject: %s \nMessage: %s \n" %
(mailbox.from_email, (mailbox.from_email,
to, subject, body) + '-'*36)) to, subject, body) + '-'*36))
if mailbox.send_mail(options.get('subject'), options.get('to'), options.get('body')): if mailbox.send_mail(subject, to, body):
self.stdout.write(self.style.SUCCESS('The letter is sent.')) self.stdout.write(self.style.SUCCESS('The letter is sent.'))

View file

@ -4,7 +4,7 @@ import six
from django.test.utils import override_settings from django.test.utils import override_settings
from django_mailbox.tests.base import EmailMessageTestCase, get_email_as_text from django_mailbox.tests.base import EmailMessageTestCase, get_email_as_text
from django_mailbox.transports import ImapTransport, Pop3Transport from django_mailbox.transports import ImapTransport, Pop3Transport, SMTPTransport
FAKE_UID_SEARCH_ANSWER = ( FAKE_UID_SEARCH_ANSWER = (
'OK', 'OK',
@ -168,3 +168,25 @@ class TestPop3Transport(EmailMessageTestCase):
expected_message = self._get_email_object('generic_message.eml') expected_message = self._get_email_object('generic_message.eml')
self.assertEqual(expected_message, actual_message) self.assertEqual(expected_message, actual_message)
class TestSMTPTransport(EmailMessageTestCase):
class TestSMTPTransport(EmailMessageTestCase):
def setUp(self):
self.arbitrary_hostname = ''
self.arbitrary_port = 465
self.ssl = True
self.transport = SMTPTransport(
self.arbitrary_hostname,
self.arbitrary_port,
self.ssl
)
def test_sending_messages(self):
with mock.patch('SMTPTransport') as mock_smtp:
from_address = 'from@domain.com'
to_address = 'to@domain.com'
smtp = mock_smtp('smtp.domain.com')
smtp.send_message(from_address, [to_address], 'subject', 'message')

View file

@ -1,10 +1,8 @@
import smtplib from smtplib import SMTP, SMTP_SSL
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.image import MIMEImage
# from django.conf import settings
# from django.core.mail import EmailMessage
from django_mailbox.transports.base import EmailTransport from django_mailbox.transports.base import EmailTransport
@ -18,11 +16,11 @@ class SMTPTransport(EmailTransport):
self.server = None self.server = None
if ssl: if ssl:
self.transport = smtplib.SMTP_SSL self.transport = SMTP_SSL
if not self.port: if not self.port:
self.port = 465 self.port = 465
else: else:
self.transport = smtplib.SMTP self.transport = SMTP
if not self.port: if not self.port:
self.port = 25 self.port = 25
@ -33,11 +31,15 @@ class SMTPTransport(EmailTransport):
_ = 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, img=None, html=False):
def send_message(self, subject, message, from_email, recipient_list): msg = MIMEMultipart()
msg = MIMEMultipart(message)
msg_text = MIMEText(message, 'plain') msg_text = MIMEText(message, 'plain' if not html else 'html')
if img:
with open(img, 'rb') as fp:
msg_img = MIMEImage(fp.read())
msg.attach(msg_img)
msg.attach(msg_text) msg.attach(msg_text)