Beispiel #1
0
 def test_MakeMessage_with_binary_attachment(self):
     """Message should still encode as ascii with non-ascii attachments."""
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           u'Body')
     ctrl.addAttachment('\x00\xffattach')
     message = ctrl.makeMessage()
     self.assertTrue(is_ascii_only(message.as_string()),
                     "Non-ascii message string.")
 def test_MakeMessage_with_binary_attachment(self):
     """Message should still encode as ascii with non-ascii attachments."""
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', u'Body')
     ctrl.addAttachment('\x00\xffattach')
     message = ctrl.makeMessage()
     self.assertTrue(
         is_ascii_only(message.as_string()), "Non-ascii message string.")
Beispiel #3
0
 def test_MakeMessage_with_non_binary_attachment(self):
     """Simple ascii attachments should not be encoded."""
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           u'Body')
     ctrl.addAttachment('Hello, I am ascii')
     message = ctrl.makeMessage()
     body, attachment = message.get_payload()
     self.assertEqual(attachment.get_payload(),
                      attachment.get_payload(decode=True))
 def test_MakeMessage_with_non_binary_attachment(self):
     """Simple ascii attachments should not be encoded."""
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', u'Body')
     ctrl.addAttachment('Hello, I am ascii')
     message = ctrl.makeMessage()
     body, attachment = message.get_payload()
     self.assertEqual(
         attachment.get_payload(), attachment.get_payload(decode=True))
 def test_MakeMessage_no_attachment(self):
     """A message without an attachment should have a single body."""
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', 'body')
     message = ctrl.makeMessage()
     self.assertEqual('*****@*****.**', message['From'])
     self.assertEqual('*****@*****.**', message['To'])
     self.assertEqual('subject', message['Subject'])
     self.assertEqual('body', message.get_payload(decode=True))
Beispiel #6
0
 def test_MakeMessage_no_attachment(self):
     """A message without an attachment should have a single body."""
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           'body')
     message = ctrl.makeMessage()
     self.assertEqual('*****@*****.**', message['From'])
     self.assertEqual('*****@*****.**', message['To'])
     self.assertEqual('subject', message['Subject'])
     self.assertEqual('body', message.get_payload(decode=True))
Beispiel #7
0
 def test_MakeMessageSpecialChars(self):
     """A message should have its to and from addrs converted to ascii."""
     to_addr = u'\[email protected]'
     from_addr = u'\[email protected]'
     ctrl = MailController(from_addr, to_addr, 'subject', 'body')
     message = ctrl.makeMessage()
     self.assertEqual('=?utf-8?b?4YSAZnJvbUBleGFtcGxlLmNvbQ==?=',
                      message['From'])
     self.assertEqual('=?utf-8?b?4YSAdG9AZXhhbXBsZS5jb20=?=', message['To'])
     self.assertEqual('subject', message['Subject'])
     self.assertEqual('body', message.get_payload(decode=True))
Beispiel #8
0
 def test_MakeMessage_unicode_body(self):
     # A message without an attachment with a unicode body gets sent as
     # UTF-8 encoded MIME text, and the message as a whole can be flattened
     # to a string with Unicode errors.
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           u'Bj\xf6rn')
     message = ctrl.makeMessage()
     # Make sure that the message can be flattened to a string as sendmail
     # does without raising a UnicodeEncodeError.
     message.as_string()
     self.assertEqual('Bj\xc3\xb6rn', message.get_payload(decode=True))
 def test_MakeMessage_unicode_body(self):
     # A message without an attachment with a unicode body gets sent as
     # UTF-8 encoded MIME text, and the message as a whole can be flattened
     # to a string with Unicode errors.
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', u'Bj\xf6rn')
     message = ctrl.makeMessage()
     # Make sure that the message can be flattened to a string as sendmail
     # does without raising a UnicodeEncodeError.
     message.as_string()
     self.assertEqual('Bj\xc3\xb6rn', message.get_payload(decode=True))
 def test_MakeMessageSpecialChars(self):
     """A message should have its to and from addrs converted to ascii."""
     to_addr = u'\[email protected]'
     from_addr = u'\[email protected]'
     ctrl = MailController(from_addr, to_addr, 'subject', 'body')
     message = ctrl.makeMessage()
     self.assertEqual('=?utf-8?b?4YSAZnJvbUBleGFtcGxlLmNvbQ==?=',
         message['From'])
     self.assertEqual('=?utf-8?b?4YSAdG9AZXhhbXBsZS5jb20=?=',
         message['To'])
     self.assertEqual('subject', message['Subject'])
     self.assertEqual('body', message.get_payload(decode=True))
Beispiel #11
0
 def test_MakeMessage_long_address(self):
     # Long email addresses are not wrapped if very long.  These are due to
     # the paranoid checks that are in place to make sure that there are no
     # carriage returns in the to or from email addresses.
     to_addr = ('Launchpad Community Help Rotation team '
                '<*****@*****.**>')
     from_addr = ('Some Random User With Many Public Names '
                  '<*****@*****.**')
     ctrl = MailController(from_addr, to_addr, 'subject', 'body')
     message = ctrl.makeMessage()
     self.assertEqual(from_addr, message['From'])
     self.assertEqual(to_addr, message['To'])
 def test_MakeMessage_with_specific_attachment(self):
     """Explicit attachment params should be obeyed."""
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', 'body')
     ctrl.addAttachment(
         'attach', 'text/plain', inline=True, filename='README')
     message = ctrl.makeMessage()
     attachment = message.get_payload()[1]
     self.assertEqual('attach', attachment.get_payload(decode=True))
     self.assertEqual(
         'text/plain', attachment['Content-Type'])
     self.assertEqual(
         'inline; filename="README"', attachment['Content-Disposition'])
Beispiel #13
0
 def test_MakeMessage_with_specific_attachment(self):
     """Explicit attachment params should be obeyed."""
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           'body')
     ctrl.addAttachment('attach',
                        'text/plain',
                        inline=True,
                        filename='README')
     message = ctrl.makeMessage()
     attachment = message.get_payload()[1]
     self.assertEqual('attach', attachment.get_payload(decode=True))
     self.assertEqual('text/plain', attachment['Content-Type'])
     self.assertEqual('inline; filename="README"',
                      attachment['Content-Disposition'])
 def test_MakeMessage_long_address(self):
     # Long email addresses are not wrapped if very long.  These are due to
     # the paranoid checks that are in place to make sure that there are no
     # carriage returns in the to or from email addresses.
     to_addr = (
         'Launchpad Community Help Rotation team '
         '<*****@*****.**>')
     from_addr = (
         'Some Random User With Many Public Names '
         '<*****@*****.**')
     ctrl = MailController(from_addr, to_addr, 'subject', 'body')
     message = ctrl.makeMessage()
     self.assertEqual(from_addr, message['From'])
     self.assertEqual(to_addr, message['To'])
Beispiel #15
0
 def test_MakeMessage_with_attachment(self):
     """A message with an attachment should be multipart."""
     ctrl = MailController('*****@*****.**', '*****@*****.**', 'subject',
                           'body')
     ctrl.addAttachment('attach')
     message = ctrl.makeMessage()
     self.assertEqual('*****@*****.**', message['From'])
     self.assertEqual('*****@*****.**', message['To'])
     self.assertEqual('subject', message['Subject'])
     body, attachment = message.get_payload()
     self.assertEqual('body', body.get_payload(decode=True))
     self.assertEqual('attach', attachment.get_payload(decode=True))
     self.assertEqual('application/octet-stream',
                      attachment['Content-Type'])
     self.assertEqual('attachment', attachment['Content-Disposition'])
 def test_MakeMessage_with_attachment(self):
     """A message with an attachment should be multipart."""
     ctrl = MailController(
         '*****@*****.**', '*****@*****.**', 'subject', 'body')
     ctrl.addAttachment('attach')
     message = ctrl.makeMessage()
     self.assertEqual('*****@*****.**', message['From'])
     self.assertEqual('*****@*****.**', message['To'])
     self.assertEqual('subject', message['Subject'])
     body, attachment = message.get_payload()
     self.assertEqual('body', body.get_payload(decode=True))
     self.assertEqual('attach', attachment.get_payload(decode=True))
     self.assertEqual(
         'application/octet-stream', attachment['Content-Type'])
     self.assertEqual('attachment', attachment['Content-Disposition'])
Beispiel #17
0
def create_mail_for_directoryMailBox(from_addr, to_addrs, subject, body,
                                     headers=None):
    """Create a email in the DirectoryMailBox."""
    mc = MailController(from_addr, to_addrs, subject, body, headers)
    message = mc.makeMessage()
    if 'message-id' not in message:
        message['Message-Id'] = get_msgid()
    if 'date' not in message:
        message['Date'] = formatdate()
    # Since this is faking incoming email, set the X-Original-To.
    message['X-Original-To'] = to_addrs
    mailbox = getUtility(IMailBox)
    msg_file = open(
        os.path.join(mailbox.mail_dir, message['Message-Id']), 'w')
    msg_file.write(message.as_string())
    msg_file.close()
Beispiel #18
0
def create_mail_for_directoryMailBox(from_addr,
                                     to_addrs,
                                     subject,
                                     body,
                                     headers=None):
    """Create a email in the DirectoryMailBox."""
    mc = MailController(from_addr, to_addrs, subject, body, headers)
    message = mc.makeMessage()
    if 'message-id' not in message:
        message['Message-Id'] = get_msgid()
    if 'date' not in message:
        message['Date'] = formatdate()
    # Since this is faking incoming email, set the X-Original-To.
    message['X-Original-To'] = to_addrs
    mailbox = getUtility(IMailBox)
    msg_file = open(os.path.join(mailbox.mail_dir, message['Message-Id']), 'w')
    msg_file.write(message.as_string())
    msg_file.close()