Exemple #1
0
    def test_default_from(self):
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
Exemple #2
0
    def test_nofrom(self):
        settings.emails.from_default = ''
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'])

        try:
            email.message()
            self.fail('expected SettingsError since from was not set')
        except SettingsError as e:
            assert 'email must have a from address' in str(e)
Exemple #3
0
    def test_normal_ascii(self):
        """Test normal ascii character case"""
        email = EmailMessage('Subject', 'Content', '*****@*****.**', ['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == '*****@*****.**'
        assert message['To'] == '*****@*****.**'
        assert email.recipients() == ['*****@*****.**']
Exemple #4
0
    def test_multi_recip(self):
        email = EmailMessage('Subject', 'Content', '*****@*****.**',
                             ['*****@*****.**', '*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == '*****@*****.**'
        assert message['To'] == '[email protected], [email protected]'
        assert email.recipients() == ['*****@*****.**', '*****@*****.**']
Exemple #5
0
    def test_bcc(self):
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'],
                             bcc=['*****@*****.**', '*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
        assert email.recipients() == ['*****@*****.**', '*****@*****.**', '*****@*****.**']
Exemple #6
0
    def test_reply_to_default(self):
        settings.emails.reply_to = '*****@*****.**'
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
        assert message['Reply-To'] == '*****@*****.**'
Exemple #7
0
    def test_extra_header(self):
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'],
                             headers={'Reply-To': '*****@*****.**'})
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
        assert message['Reply-To'] == '*****@*****.**'
Exemple #8
0
    def test_header_inj_from(self):
        email = EmailMessage('From Injection Test', 'Content',
                             '[email protected]\nto:[email protected]', ['*****@*****.**'])

        try:
            email.message()
        except BadHeaderError as e:
            assert 'Header values can\'t contain newlines' in str(e)
        else:
            self.fail("header injection allowed in from")
Exemple #9
0
 def test_long_subj(self):
     # Test for space continuation character in long (ascii) subject headers (#7747)
     expected = 'Content-Type: text/plain; charset="utf-8"\nMIME-Version: 1.0\n' \
         'Content-Transfer-Encoding: quoted-printable\nSubject: Long subject lines ' \
         'that get wrapped should use a space continuation\n character to get ' \
         'expected behaviour in Outlook and Thunderbird\nFrom: [email protected]' \
         '\nTo: [email protected]'
     email = EmailMessage('Long subject lines that get wrapped should use a space '
                          'continuation character to get expected behaviour in Outlook '
                          'and Thunderbird', 'Content', '*****@*****.**',
                          ['*****@*****.**'])
     message = email.message()
     assert message.as_string().startswith(expected), message.as_string()
Exemple #10
0
    def test_html_overrides(self):
        """Test overrides with html content"""

        settings.emails.override = '*****@*****.**'
        body = '<p>This is an <strong>important</strong> message.</p>'
        email = EmailMessage('Subject', body, '*****@*****.**', ['*****@*****.**'],
                             cc=['*****@*****.**'], bcc=['*****@*****.**'])
        email.content_subtype = "html"  # Main content is now text/html
        message = email.message()

        msg_body = '<hr />\n\n<p>To: [email protected] <br />\nCc: [email protected] <br />\n' \
            'Bcc: [email protected]</p>\n\n<hr />\n<p>This is an <strong>important</strong> ' \
            'message.</p>'
        assert msg_body in message.as_string()
        assert 'text/html;' in message['Content-Type']
Exemple #11
0
    def test_overrides(self, mm_tracker=None):
        """Test overrides"""

        settings.emails.override = '*****@*****.**'
        email = EmailMessage('Subject', 'Content', '*****@*****.**', ['*****@*****.**'],
                             cc=['*****@*****.**'], bcc=['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message['From'] == '*****@*****.**'
        assert message['To'] == '*****@*****.**'
        assert message['Cc'] is None
        assert email.recipients() == ['*****@*****.**']

        msg_string = message.as_string()
        assert '-' * 70 in msg_string
        assert '\n\nTo: [email protected]' in msg_string
        assert '\nCc: [email protected]' in msg_string
        assert '\nBcc: [email protected]' in msg_string
        assert '\nContent' in msg_string
Exemple #12
0
    def test_duplicate_headers(self):
        # Specifying dates or message-ids in the extra headers overrides the default
        # values (#9233).

        headers = {"date": "Fri, 09 Nov 2001 01:08:47 -0000", "Message-ID": "foo"}
        email = EmailMessage('subject', 'content', '*****@*****.**', ['*****@*****.**'],
                             headers=headers)
        print(email.message().as_string())
        msg_str = email.message().as_string()
        # testing with asserts because the ordering of date and Message-ID headers is
        # not guaranteed
        assert 'Content-Type: text/plain; charset="utf-8"' in msg_str
        assert 'MIME-Version: 1.0' in msg_str
        assert 'Content-Transfer-Encoding: quoted-printable' in msg_str
        assert 'Subject: subject' in msg_str
        assert 'From: [email protected]' in msg_str
        assert 'To: [email protected]' in msg_str
        assert 'date: Fri, 09 Nov 2001 01:08:47 -0000' in msg_str
        assert 'Message-ID: foo' in msg_str
        assert '\n\ncontent' in msg_str
Exemple #13
0
    def test_overrides_recipients_first(self):
        """
            Test overrides, but call recipients first just like the code does
            when sending an email
        """

        settings.emails.override = '*****@*****.**'
        email = EmailMessage('Subject', 'Content', '*****@*****.**', ['*****@*****.**'],
                             cc=['*****@*****.**'], bcc=['*****@*****.**'])
        assert email.recipients() == ['*****@*****.**']

        message = email.message()
        assert message['Subject'].encode() == 'Subject'
        assert message['From'] == '*****@*****.**'
        assert message['To'] == '*****@*****.**'
        assert message['Cc'] is None

        msg_string = message.as_string()
        assert '-' * 70 in msg_string
        assert '\n\nTo: [email protected]' in msg_string
        assert '\nCc: [email protected]' in msg_string
        assert '\nBcc: [email protected]' in msg_string
        assert '\nContent' in msg_string
Exemple #14
0
    def test_html_override_with_full_document(self):
        html_doc = r"""<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Minimal XHTML 1.0 Document with W3C DTD</title>
  </head>
  <body>
    <p>This is a minimal <a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a>
    document with a W3C url for the DTD.</p>
  </body>
</html>"""
        settings.emails.override = '*****@*****.**'
        email = EmailMessage('Subject', html_doc, '*****@*****.**', ['*****@*****.**'],
                             cc=['*****@*****.**'], bcc=['*****@*****.**'])
        email.content_subtype = "html"  # Main content is now text/html
        message = email.message()

        msg_body = '<body><hr />\n\n<p>To: [email protected] <br />\nCc: [email protected] <br />\n' \
            'Bcc: [email protected]</p>\n\n<hr />\n\n    <p>This is a minimal '
        assert msg_body in message.as_string()
        assert 'text/html;' in message['Content-Type']
Exemple #15
0
    def test_cc_defaults(self):
        settings.emails.cc_defaults = ['*****@*****.**', '*****@*****.**']
        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
        assert message['Cc'] == '[email protected], [email protected]'
        assert email.recipients() == ['*****@*****.**', '*****@*****.**', '*****@*****.**']

        email = EmailMessage('Subject', 'Content', to=['*****@*****.**'], cc=['*****@*****.**'])
        message = email.message()

        assert message['Subject'].encode() == 'Subject'
        assert message.get_payload() == 'Content'
        assert message['From'] == 'root@localhost'
        assert message['To'] == '*****@*****.**'
        assert message['Cc'] == '*****@*****.**'
        assert email.recipients() == ['*****@*****.**', '*****@*****.**']
Exemple #16
0
def send_new_user_email(user_obj):
    subject = '%s - User Login Information' % (settings.name.full)
    body = getcontent('auth:new_user_email.txt', user_obj=user_obj).primary
    email = EmailMessage(subject, body, None, [user_obj.email_address])
    return send_email_or_log_error(email)
Exemple #17
0
def send_reset_password_email(user_obj):
    subject = '%s - User Password Reset' % (settings.name.full)
    body = getcontent('auth:password_reset_email.txt',
                      user_obj=user_obj).primary
    email = EmailMessage(subject, body, None, [user_obj.email_address])
    return send_email_or_log_error(email)