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:
parent
e3c57c3c14
commit
9bc97119e3
3 changed files with 41 additions and 18 deletions
|
|
@ -7,13 +7,12 @@ class Command(BaseCommand):
|
||||||
help = 'Sends an e-mail to specified recipient'
|
help = 'Sends an e-mail to specified recipient'
|
||||||
|
|
||||||
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')
|
||||||
|
|
@ -22,6 +21,6 @@ class Command(BaseCommand):
|
||||||
mailbox = Mailbox.objects.get(pk=from_email)
|
mailbox = Mailbox.objects.get(pk=from_email)
|
||||||
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.'))
|
||||||
|
|
|
||||||
|
|
@ -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')
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue