diff --git a/smash/web/email.py b/smash/web/email.py index e9a0722a533b5d0d7f720d4cfd9dce2fb64f8aec..6ed3208b503036cf40acde5bef6290fd7cad1b34 100644 --- a/smash/web/email.py +++ b/smash/web/email.py @@ -1,28 +1,26 @@ # coding=utf-8 -from django.core import mail -from django.core.mail.backends.smtp import EmailBackend - -from web.models import ConfigurationItem -from web.models.constants import EMAIL_HOST_CONFIGURATION_TYPE, EMAIL_PASSWORD_CONFIGURATION_TYPE, \ - EMAIL_PORT_CONFIGURATION_TYPE, EMAIL_USER_CONFIGURATION_TYPE, EMAIL_CONFIGURATION_TYPE +from django.conf import settings +from django.core.mail import send_mail +from django.core.mail import EmailMessage class EmailSender(object): - def __init__(self): - host = ConfigurationItem.objects.get(type=EMAIL_HOST_CONFIGURATION_TYPE).value - port = ConfigurationItem.objects.get(type=EMAIL_PORT_CONFIGURATION_TYPE).value - user = ConfigurationItem.objects.get(type=EMAIL_USER_CONFIGURATION_TYPE).value - password = ConfigurationItem.objects.get(type=EMAIL_PASSWORD_CONFIGURATION_TYPE).value - self.backend = EmailBackend(host=host, port=port, username=user, password=password, use_tls=False, - use_ssl=False) - # self.connection = mail.get_connection(backend=self.backend) - self.connection = mail.get_connection() + def send_email(self, subject, body, recipients, cc_recipients=[]): + email_from = getattr(settings, "DEFAULT_FROM_EMAIL", None) + recipient_list = [] + for recipient in recipients.split(";"): + recipient_list.append(recipient) + cc_recipients.append(email_from) + + message = EmailMessage( + subject, + body, + email_from, + recipient_list, + cc=cc_recipients + ) + message.content_subtype = "html" + message.send() - def send_email(self, subject, body, to): - email_from = ConfigurationItem.objects.get(type=EMAIL_CONFIGURATION_TYPE).value - print email_from - print subject - print body - print to - mail.EmailMessage(subject, body, email_from, [to], connection=self.connection).send(fail_silently=False) +# send_mail(subject, "", email_from, recipient_list, cc=cc_recipients, html_message=body) diff --git a/smash/web/tests/test_email.py b/smash/web/tests/test_email.py index 29102ca7b8bf89d5a7b9f94379090a4efc8ca241..879acc7e3b4164b87d40d6c7cbc150f8c3ac9349 100644 --- a/smash/web/tests/test_email.py +++ b/smash/web/tests/test_email.py @@ -1,31 +1,19 @@ # coding=utf-8 +from django.core import mail from django.test import TestCase from web.email import EmailSender -from web.models import ConfigurationItem -from web.models.constants import EMAIL_HOST_CONFIGURATION_TYPE, EMAIL_PASSWORD_CONFIGURATION_TYPE, \ - EMAIL_PORT_CONFIGURATION_TYPE, EMAIL_USER_CONFIGURATION_TYPE, EMAIL_CONFIGURATION_TYPE class TestEmailSender(TestCase): - def setUp(selfself): - host = ConfigurationItem.objects.get(type=EMAIL_HOST_CONFIGURATION_TYPE) - host.value = "smtp.uni.lu" - host.save() - port = ConfigurationItem.objects.get(type=EMAIL_PORT_CONFIGURATION_TYPE) - port.value="25" - port.save() - - # uni doesn't check it - user = ConfigurationItem.objects.get(type=EMAIL_USER_CONFIGURATION_TYPE) - password = ConfigurationItem.objects.get(type=EMAIL_PASSWORD_CONFIGURATION_TYPE) - - - email_from = ConfigurationItem.objects.get(type=EMAIL_CONFIGURATION_TYPE) - email_from.value = "piotr.gawron@uni.lu" - email_from.save() - def test_send_email(self): + self.assertEqual(0, len(mail.outbox)) + email_sender = EmailSender() email_sender.send_email("test", "test body<br/>and content", "piotr.gawron@uni.lu") + self.assertEqual(1, len(mail.outbox)) + + # console test that actually send email + # > manage.py shell + # from web.email import EmailSender; EmailSender().send_email("test","<h1>body</h1>","piotr.gawron@uni.lu");