def test_to_mime_message_with_data(self): msg = self._dummy_message() envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg['Subject'] == msg['subject'] assert mime_msg['To'] == 'Example To <*****@*****.**>' assert mime_msg['From'] == 'Example From <*****@*****.**>' cc_header = ( '[email protected],' 'Example CC2 <*****@*****.**>,' 'Example CC3 <*****@*****.**>' ) assert mime_msg['CC'] == cc_header assert 'BCC' not in mime_msg assert mime_msg['Reply-To'] == msg['headers']['Reply-To'] assert mime_msg['X-Mailer'] == msg['headers']['X-Mailer'] mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == 'text/plain' assert text_part.get_payload(decode=True) == msg['text_body'].encode('utf-8') assert html_part.get_content_type() == 'text/html' assert html_part.get_payload(decode=True) == msg['html_body'].encode('utf-8')
def test_to_mime_message_with_data(self): msg = self._dummy_message() envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg["Subject"] == msg["subject"] assert mime_msg["To"] == "Example To <*****@*****.**>" assert mime_msg["From"] == "Example From <*****@*****.**>" cc_header = "[email protected]," "Example CC2 <*****@*****.**>," "Example CC3 <*****@*****.**>" assert mime_msg["CC"] == cc_header assert "BCC" not in mime_msg assert mime_msg["Reply-To"] == msg["headers"]["Reply-To"] assert mime_msg["X-Mailer"] == msg["headers"]["X-Mailer"] mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == "text/plain" assert text_part.get_payload(decode=True) == msg["text_body"].encode("utf-8") assert html_part.get_content_type() == "text/html" assert html_part.get_payload(decode=True) == msg["html_body"].encode("utf-8")
def test_to_mime_message_with_many_to_addresses(self): msg = self._dummy_message() msg["to_addr"] = ["*****@*****.**", "Example To2 <*****@*****.**>", ("*****@*****.**", "Example To3")] envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None to_header = "[email protected]," "Example To2 <*****@*****.**>," "Example To3 <*****@*****.**>" assert mime_msg["To"] == to_header
def test_to_mime_message_with_no_data(self): envelope = Envelope() mime_msg = envelope.to_mime_message() assert mime_msg['Subject'] == '' assert mime_msg['To'] == '' assert mime_msg['From'] == '' assert 'CC' not in mime_msg assert 'BCC' not in mime_msg mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 1
def test_to_mime_message_with_no_data(self): envelope = Envelope() mime_msg = envelope.to_mime_message() assert mime_msg["Subject"] == "" assert mime_msg["To"] == "" assert mime_msg["From"] == "" assert "CC" not in mime_msg assert "BCC" not in mime_msg mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 1
def test_to_mime_message_unicode(self): msg = { 'to_addr': ('*****@*****.**', u'ęóąśłżźćń'), 'from_addr': ('*****@*****.**', u'ęóąśłżźćń'), 'subject': u'ęóąśłżźćń', 'html_body': u'ęóąśłżźćń', 'text_body': u'ęóąśłżźćń', 'cc_addr': [('*****@*****.**', u'ęóąśłżźćń')], 'bcc_addr': [u'ęóąśłżźćń <*****@*****.**>'], 'headers': { 'X-Test': u'ęóąśłżźćń' }, 'charset': 'utf-8' } envelope = Envelope(**msg) def enc_addr_header(name, email): header = Header(name) header.append(email) return header.encode() mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg['Subject'] == Header(msg['subject'], 'utf-8').encode() assert mime_msg['To'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['From'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['CC'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['BCC'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['X-Test'] == Header(msg['headers']['X-Test'], 'utf-8').encode() mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == 'text/plain' assert text_part.get_payload( decode=True) == msg['text_body'].encode('utf-8') assert html_part.get_content_type() == 'text/html' assert html_part.get_payload( decode=True) == msg['html_body'].encode('utf-8')
def test_to_mime_message_with_many_to_addresses(self): msg = self._dummy_message() msg['to_addr'] = [ '*****@*****.**', 'Example To2 <*****@*****.**>', ('*****@*****.**', 'Example To3') ] envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None to_header = ('[email protected],' 'Example To2 <*****@*****.**>,' 'Example To3 <*****@*****.**>') assert mime_msg['To'] == to_header
def test_to_mime_message_unicode(self): msg = { 'to_addr': ('*****@*****.**', u'ęóąśłżźćń'), 'from_addr': ('*****@*****.**', u'ęóąśłżźćń'), 'subject': u'ęóąśłżźćń', 'html_body': u'ęóąśłżźćń', 'text_body': u'ęóąśłżźćń', 'cc_addr': [ ('*****@*****.**', u'ęóąśłżźćń') ], 'bcc_addr': [ u'ęóąśłżźćń <*****@*****.**>' ], 'headers': { 'X-Test': u'ęóąśłżźćń' }, 'charset': 'utf-8' } envelope = Envelope(**msg) def enc_addr_header(name, email): header = Header(name) header.append(email) return header.encode() mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg['Subject'] == Header(msg['subject'], 'utf-8').encode() assert mime_msg['To'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['From'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert mime_msg['CC'] == enc_addr_header(u'ęóąśłżźćń', '<*****@*****.**>') assert 'BCC' not in mime_msg assert mime_msg['X-Test'] == Header(msg['headers']['X-Test'], 'utf-8').encode() mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == 'text/plain' assert text_part.get_payload(decode=True) == msg['text_body'].encode('utf-8') assert html_part.get_content_type() == 'text/html' assert html_part.get_payload(decode=True) == msg['html_body'].encode('utf-8')
def test_send(self): conn = SMTP('localhost') msg = self._dummy_message() envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() conn.send(envelope) assert conn._conn is not None assert len(conn._conn._call_stack.get('sendmail', [])) == 1 call_args = conn._conn._call_stack['sendmail'][0][0] assert len(call_args) == 3 assert call_args[0] == mime_msg['From'] assert call_args[1] == mime_msg['To'] assert call_args[2] != ''
def test_to_mime_message_with_many_to_addresses(self): msg = self._dummy_message() msg['to_addr'] = [ '*****@*****.**', 'Example To2 <*****@*****.**>', ('*****@*****.**', 'Example To3') ] envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None to_header = ( '[email protected],' 'Example To2 <*****@*****.**>,' 'Example To3 <*****@*****.**>' ) assert mime_msg['To'] == to_header
def test_send(self): conn = SMTP("localhost") msg = self._dummy_message() envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() conn.send(envelope) assert conn._conn is not None assert len(conn._conn._call_stack.get("sendmail", [])) == 1 call_args = conn._conn._call_stack["sendmail"][0][0] assert len(call_args) == 3 assert call_args[0] == mime_msg["From"] assert call_args[1] == [ envelope._addrs_to_header([addr]) for addr in envelope._to + envelope._cc + envelope._bcc ] assert call_args[2] != ""
def test_to_mime_message_unicode(self): msg = { 'to_addr': '*****@*****.**', 'to_name': u'ęóąśłżźćń', 'from_addr': '*****@*****.**', 'from_name': u'ęóąśłżźćń', 'subject': u'ęóąśłżźćń', 'html_body': u'ęóąśłżźćń', 'text_body': u'ęóąśłżźćń', 'cc_addrs': [('*****@*****.**', u'ęóąśłżźćń')], 'bcc_addrs': [('*****@*****.**', u'ęóąśłżźćń')], 'headers': { 'X-Test': u'ęóąśłżźćń' }, 'charset': 'utf-8' } envelope = Envelope(**msg) mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg['Subject'] == msg['subject'].encode('utf-8') assert mime_msg['To'] == u'ęóąśłżźćń <*****@*****.**>'.encode('utf-8') assert mime_msg['From'] == u'ęóąśłżźćń <*****@*****.**>'.\ encode('utf-8') cc_header = u'ęóąśłżźćń <*****@*****.**>' assert mime_msg['CC'] == cc_header.encode('utf-8') bcc_header = u'ęóąśłżźćń <*****@*****.**>' assert mime_msg['BCC'] == bcc_header.encode('utf-8') assert mime_msg['X-Test'] == msg['headers']['X-Test'].encode('utf-8') mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == 'text/plain' assert text_part.get_payload() == msg['text_body'].encode('utf-8') assert html_part.get_content_type() == 'text/html' assert html_part.get_payload() == msg['html_body'].encode('utf-8')
def test_to_mime_message_unicode(self): msg = { "to_addr": ("*****@*****.**", u"ęóąśłżźćń"), "from_addr": ("*****@*****.**", u"ęóąśłżźćń"), "subject": u"ęóąśłżźćń", "html_body": u"ęóąśłżźćń", "text_body": u"ęóąśłżźćń", "cc_addr": [("*****@*****.**", u"ęóąśłżźćń")], "bcc_addr": [u"ęóąśłżźćń <*****@*****.**>"], "headers": {"X-Test": u"ęóąśłżźćń"}, "charset": "utf-8", } envelope = Envelope(**msg) def enc_addr_header(name, email): header = Header(name) header.append(email) return header.encode() mime_msg = envelope.to_mime_message() assert mime_msg is not None assert mime_msg["Subject"] == Header(msg["subject"], "utf-8").encode() assert mime_msg["To"] == enc_addr_header(u"ęóąśłżźćń", "<*****@*****.**>") assert mime_msg["From"] == enc_addr_header(u"ęóąśłżźćń", "<*****@*****.**>") assert mime_msg["CC"] == enc_addr_header(u"ęóąśłżźćń", "<*****@*****.**>") assert "BCC" not in mime_msg assert mime_msg["X-Test"] == Header(msg["headers"]["X-Test"], "utf-8").encode() mime_msg_parts = [part for part in mime_msg.walk()] assert len(mime_msg_parts) == 3 text_part, html_part = mime_msg_parts[1:] assert text_part.get_content_type() == "text/plain" assert text_part.get_payload(decode=True) == msg["text_body"].encode("utf-8") assert html_part.get_content_type() == "text/html" assert html_part.get_payload(decode=True) == msg["html_body"].encode("utf-8")