def process_message(self, peer, mailfrom, rcpttos, data, **kwargs): rcpttos_filtered = [r for r in rcpttos if '@sh8.email' in r.lower()] if len(rcpttos_filtered) == 0: return # TODO Redesign this logic, and write tests code of exception logic. try: mail = raw_to_mail(data) mails = reproduce_mail(mail, rcpttos_filtered) for m in mails: m.save() except BaseException as e: dir_path = os.path.join(settings.BASE_DIR, "log/raw_messages/") if not os.path.isdir(dir_path): os.makedirs(dir_path) file_name = "{}.msg".format(str(uuid.uuid4())) file_path = os.path.join(dir_path, file_name) with open(file_path, 'w') as f: f.write(data) logger.exception("""\ {} Parameter info below. [peer] {} [mailfrom] {} [rcpttos] {} [data] {} [**kwargs] {}""".format(str(e), peer, mailfrom, rcpttos, "'data' is recorded to file located in '{}'".format(file_path), kwargs)) raise
def test_raw_to_mail__content_disposition_inline(self): # given rawemail = open('recvmail/fixtures/recvmail/content_disposition_inline.eml').read() expected = Mail.objects.get(pk=5) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.secret_code, mail.secret_code) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__unicode_sender(self): # given rawemail = open('recvmail/fixtures/recvmail/unicode_sender.eml').read() expected = Mail.objects.get(pk=4) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__secretcode(self): # given rawemail = open('recvmail/fixtures/recvmail/secret.eml').read() expected = Mail.objects.get(pk=6) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.secret_code, mail.secret_code) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__without_content_type_header(self): """This is a test case of '#20 Exception occurred when the 'Content-Type' header not exists.'.""" # given rawemail = open('recvmail/fixtures/recvmail/no_content_type_header.eml').read() expected = Mail.objects.get(pk=5) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.secret_code, mail.secret_code) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__euckr_plain(self): self.maxDiff = None # given rawemail = open('recvmail/fixtures/recvmail/iphone_mail_euckr_plain.eml').read() expected = Mail.objects.get(pk=3) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__euckr_html(self): self.maxDiff = None # given rawemail = open('recvmail/fixtures/recvmail/iphone_mail_euckr_html.eml').read() expected = Mail.objects.get(pk=2) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertHTMLEqual(expected.contents, mail.contents)
def test_raw_to_mail(self): self.maxDiff = None # given rawemail = open('recvmail/fixtures/recvmail/aws_quoted_multipart_html_plain.eml').read() expected = Mail.objects.get(pk=1) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertHTMLEqual(expected.contents, mail.contents)
def test_raw_to_mail__euckr_html(self): self.maxDiff = None # given rawemail = open( 'recvmail/fixtures/recvmail/iphone_mail_euckr_html.eml').read() expected = Mail.objects.get(pk=2) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertHTMLEqual(expected.contents, mail.contents)
def test_raw_to_mail__without_content_type_header(self): """This is a test case of '#20 Exception occurred when the 'Content-Type' header not exists.'.""" # given rawemail = open( 'recvmail/fixtures/recvmail/no_content_type_header.eml').read() expected = Mail.objects.get(pk=5) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.secret_code, mail.secret_code) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail__euckr_plain(self): self.maxDiff = None # given rawemail = open( 'recvmail/fixtures/recvmail/iphone_mail_euckr_plain.eml').read() expected = Mail.objects.get(pk=3) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertEqualExceptCarriageReturnEndNewLine(expected.contents, mail.contents)
def test_raw_to_mail(self): self.maxDiff = None # given rawemail = open( 'recvmail/fixtures/recvmail/aws_quoted_multipart_html_plain.eml' ).read() expected = Mail.objects.get(pk=1) # when mail = raw_to_mail(rawemail) # then self.assertEqual(expected.recipient, mail.recipient) self.assertEqual(expected.sender, mail.sender) self.assertEqual(expected.subject, mail.subject) self.assertHTMLEqual(expected.contents, mail.contents)