def test_prefers_html_body_over_text(self): mime_email = self._given_mime_email('email-html.mime') email = email_parser.parse_mime_email(mime_email) self.assertEqual(email.get('body'), '<div dir="ltr">Body of the message.</div>\n')
def test_parses_email_with_cc_and_bcc(self): mime_email = self._given_mime_email('email-ccbcc.mime') email = email_parser.parse_mime_email(mime_email) self.assertEqual(email.get('bcc'), ['*****@*****.**']) self.assertEqual(email.get('cc'), ['*****@*****.**', '*****@*****.**'])
def test_parses_email_with_attachments(self): mime_email = self._given_mime_email('email-attachment.mime') email = email_parser.parse_mime_email(mime_email) attachments = email.get('attachments', []) self.assertEqual(len(attachments), 1) self.assertStartsWith(attachments[0].get('content'), 'iVBORw0') self.assertEqual(attachments[0].get('filename'), 'cute-mouse-clipart-mouse4.png')
def test_parses_email_metadata(self): mime_email = self._given_mime_email('email-html.mime') email = email_parser.parse_mime_email(mime_email) self.assertEqual(email.get('from'), '*****@*****.**') self.assertEqual(email.get('subject'), 'Two recipients') self.assertEqual(email.get('sent_at'), '2017-02-13 06:25') self.assertEqual(email.get('to'), ['*****@*****.**', '*****@*****.**'])
def __call__(self, resource_id: str): mime_email = email_receive.STORAGE.fetch_text(resource_id) self.log_info('Fetched inbound MIME email %s', resource_id) email = parse_mime_email(mime_email) email = inline_images(email) server_datastore.store_email(resource_id, email) self.log_info('Stored inbound email %s', resource_id) email_receive.STORAGE.delete(resource_id) self.log_info('Deleted inbound MIME email %s', resource_id) return 'OK', 200
def __call__(self, resource_id: str): mime_email = email_receive.STORAGE.fetch_text(resource_id) email = parse_mime_email(mime_email) email = format_attachments(email) email = format_inline_images(email) server_datastore.store_email(resource_id, email) email_receive.STORAGE.delete(resource_id) self.log_event( events.EMAIL_STORED_FOR_CLIENT, {'domain': get_domain(email.get('from', ''))}) # noqa: E501 return 'OK', 200
def _parse(cls, mime_email): return email_parser.parse_mime_email(mime_email)
def _parse_mime_email(cls, mime_email: str) -> dict: email = parse_mime_email(mime_email) email = format_attachments(email) email = format_inline_images(email) return email