def test_to_message_from_message_with_spam(): mb = mailbox.mbox("tests/spam") fails = 0 total = 0 for msg in mb: try: m = encoding.from_message(msg) out = encoding.to_message(m) assert repr(out) m2 = encoding.from_message(out) for k in m: if '@' in m[k]: assert_equal(parseaddr(m[k]), parseaddr(m2[k])) else: assert m[k].strip() == m2[k].strip(), "%s: %r != %r" % (k, m[k], m2[k]) assert not m[k].startswith(u"=?") assert not m2[k].startswith(u"=?") assert m.body == m2.body, "Bodies don't match" assert_equal(len(m.parts), len(m2.parts), "Not the same number of parts.") for i, part in enumerate(m.parts): assert part.body == m2.parts[i].body, "Part %d isn't the same: %r \nvs\n. %r" % (i, part.body, m2.parts[i].body) total += 1 except encoding.EncodingError, exc: fails += 1
def test_to_message_from_message_with_spam(): mb = mailbox.mbox("tests/spam") fails = 0 total = 0 for msg in mb: try: m = encoding.from_message(msg) out = encoding.to_message(m) assert repr(out) m2 = encoding.from_message(out) for k in m: if '@' in m[k]: assert_equal(parseaddr(m[k]), parseaddr(m2[k])) else: assert m[k].strip() == m2[k].strip(), "%s: %r != %r" % ( k, m[k], m2[k]) assert not m[k].startswith(u"=?") assert not m2[k].startswith(u"=?") assert m.body == m2.body, "Bodies don't match" assert_equal(len(m.parts), len(m2.parts), "Not the same number of parts.") for i, part in enumerate(m.parts): assert part.body == m2.parts[ i].body, "Part %d isn't the same: %r \nvs\n. %r" % ( i, part.body, m2.parts[i].body) total += 1 except encoding.EncodingError, exc: fails += 1
def test_MailBase(): the_subject = u'p\xf6stal' m = encoding.MailBase() m['To'] = "testing@localhost" m['Subject'] = the_subject assert m['To'] == "testing@localhost" assert m['TO'] == m['To'] assert m['to'] == m['To'] assert m['Subject'] == the_subject assert m['subject'] == m['Subject'] assert m['sUbjeCt'] == m['Subject'] msg = encoding.to_message(m) m2 = encoding.from_message(msg) assert_equal(len(m), len(m2)) for k in m: assert m[k] == m2[k], "%s: %r != %r" % (k, m[k], m2[k]) for k in m.keys(): assert k in m del m[k] assert not k in m
def cleanse_command(input=None, output=None): """ Uses Lamson mail cleansing and canonicalization system to take an input maildir (or mbox) and replicate the email over into another maildir. It's used mostly for testing and cleaning. """ error_count = 0 try: inbox = mailbox.mbox(input) except: inbox = mailbox.Maildir(input, factory=None) outbox = mailbox.Maildir(output) for msg in inbox: try: mail = encoding.from_message(msg) outbox.add(encoding.to_string(mail)) except encoding.EncodingError as exc: print("ERROR: ", exc) error_count += 1 outbox.close() inbox.close() print("TOTAL ERRORS:", error_count)
def test_to_file_from_file(): mb = mailbox.mbox("tests/spam") msg = encoding.from_message(mb[0]) outfile = "run/encoding_test.msg" with open(outfile, 'w') as outfp: encoding.to_file(msg, outfp) with open(outfile) as outfp: msg2 = encoding.from_file(outfp) outdata = open(outfile).read() assert_equal(len(msg), len(msg2)) os.unlink(outfile)
def test_MIMEPart(): text1 = encoding.MIMEPart("text/plain") text1.set_payload("The first payload.") text2 = encoding.MIMEPart("text/plain") text2.set_payload("The second payload.") image_data = open("tests/lamson.png").read() img1 = encoding.MIMEPart("image/png") img1.set_payload(image_data) img1.set_param('attachment','', header='Content-Disposition') img1.set_param('filename','lamson.png', header='Content-Disposition') encoders.encode_base64(img1) multi = encoding.MIMEPart("multipart/mixed") for x in [text1, text2, img1]: multi.attach(x) mail = encoding.from_message(multi) assert mail.parts[0].body == "The first payload." assert mail.parts[1].body == "The second payload." assert mail.parts[2].body == image_data encoding.to_message(mail)
def test_MIMEPart(): text1 = encoding.MIMEPart("text/plain") text1.set_payload("The first payload.") text2 = encoding.MIMEPart("text/plain") text2.set_payload("The second payload.") image_data = open("tests/lamson.png").read() img1 = encoding.MIMEPart("image/png") img1.set_payload(image_data) img1.set_param('attachment', '', header='Content-Disposition') img1.set_param('filename', 'lamson.png', header='Content-Disposition') encoders.encode_base64(img1) multi = encoding.MIMEPart("multipart/mixed") for x in [text1, text2, img1]: multi.attach(x) mail = encoding.from_message(multi) assert mail.parts[0].body == "The first payload." assert mail.parts[1].body == "The second payload." assert mail.parts[2].body == image_data encoding.to_message(mail)