Lines Matching refs:msg
57 msg = self._msgobj('msg_20.txt')
58 eq(msg.get_all('cc'), ['ccc@zzz.org', 'ddd@zzz.org', 'eee@zzz.org'])
59 eq(msg.get_all('xx', 'n/a'), 'n/a')
63 msg = Message()
64 eq(msg.get_charset(), None)
66 msg.set_charset(charset)
67 eq(msg['mime-version'], '1.0')
68 eq(msg.get_content_type(), 'text/plain')
69 eq(msg['content-type'], 'text/plain; charset="iso-8859-1"')
70 eq(msg.get_param('charset'), 'iso-8859-1')
71 eq(msg['content-transfer-encoding'], 'quoted-printable')
72 eq(msg.get_charset().input_charset, 'iso-8859-1')
74 msg.set_charset(None)
75 eq(msg.get_charset(), None)
76 eq(msg['content-type'], 'text/plain')
78 msg = Message()
79 msg['MIME-Version'] = '2.0'
80 msg['Content-Type'] = 'text/x-weird'
81 msg['Content-Transfer-Encoding'] = 'quinted-puntable'
82 msg.set_charset(charset)
83 eq(msg['mime-version'], '2.0')
84 eq(msg['content-type'], 'text/x-weird; charset="iso-8859-1"')
85 eq(msg['content-transfer-encoding'], 'quinted-puntable')
89 msg = Message()
90 msg.set_charset('us-ascii')
91 eq(msg.get_charset().input_charset, 'us-ascii')
92 eq(msg['content-type'], 'text/plain; charset="us-ascii"')
95 msg = Message()
97 msg.set_payload('This is a string payload', charset)
98 self.assertEqual(msg.get_charset().input_charset, 'iso-8859-1')
103 msg = Message()
104 msg.set_payload(data, charset)
105 self.assertEqual(msg['content-transfer-encoding'], 'base64')
106 self.assertEqual(msg.get_payload(decode=True), data)
107 self.assertEqual(msg.get_payload(), '0JDQkdCS\n')
113 msg = Message()
114 msg.set_payload(data.decode('utf-8'), charset)
115 self.assertEqual(msg['content-transfer-encoding'], '8bit')
116 self.assertEqual(msg.get_payload(decode=True), data)
122 msg = Message()
123 msg.set_payload(data, charset)
124 self.assertEqual(msg['content-transfer-encoding'], '8bit')
125 self.assertEqual(msg.get_payload(decode=True), data)
128 msg = Message()
129 msg.set_payload([])
130 self.assertEqual(msg.get_payload(), [])
133 msg = Message()
134 msg['Content-Type'] = 'multipart/mixed'
135 msg.set_payload('string payload')
138 msg.attach, sub_msg)
143 msg = self._msgobj('msg_08.txt')
144 charsets = msg.get_charsets()
147 msg = self._msgobj('msg_09.txt')
148 charsets = msg.get_charsets('dingbat')
152 msg = self._msgobj('msg_12.txt')
153 charsets = msg.get_charsets()
160 msg = self._msgobj('msg_04.txt')
161 filenames = [p.get_filename() for p in msg.get_payload()]
164 msg = self._msgobj('msg_07.txt')
165 subpart = msg.get_payload(1)
171 msg = self._msgobj('msg_44.txt')
172 filenames = [p.get_filename() for p in msg.get_payload()]
177 msg = self._msgobj('msg_07.txt')
179 eq(msg.get_boundary(), 'BOUNDARY')
185 msg = self._msgobj('msg_01.txt')
186 msg.set_boundary('BOUNDARY')
187 header, value = msg.items()[4]
193 msg = self._msgobj('msg_04.txt')
194 msg.set_boundary('BOUNDARY')
195 header, value = msg.items()[4]
199 msg = self._msgobj('msg_03.txt')
201 msg.set_boundary, 'BOUNDARY')
204 msg = MIMEMultipart('form-data')
207 self.assertEqual(msg.items()[0][1], 'multipart/form-data')
209 msg.as_string()
210 self.assertEqual(msg.items()[0][1][:33],
220 msg = parser.parsestr(msgdata)
223 gen.flatten(msg, False)
231 msg = parser.parsebytes(msgdata)
234 gen.flatten(msg)
239 msg = self._msgobj('msg_10.txt')
241 eq(msg.get_payload(decode=True), None)
243 eq(msg.get_payload(0).get_payload(decode=True),
246 eq(msg.get_payload(1).get_payload(decode=True),
249 eq(msg.get_payload(2).get_payload(decode=True),
253 eq(msg.get_payload(3).get_payload(decode=True),
256 eq(msg.get_payload(4).get_payload(decode=True),
261 msg = Message()
262 msg.set_payload('begin 666 -\n+:&5L;&\\@=V]R;&0 \n \nend\n')
264 msg['content-transfer-encoding'] = cte
265 eq(msg.get_payload(decode=True), b'hello world')
267 msg.set_payload('foo')
268 eq(msg.get_payload(decode=True), b'foo')
271 msg = Message()
272 self.assertRaises(TypeError, msg.get_payload, 1)
276 msg = self._msgobj('msg_07.txt')
281 g.flatten(msg)
285 msg = Message()
286 msg['From'] = 'Me'
287 msg['to'] = 'You'
289 self.assertIn('from', msg)
290 self.assertIn('From', msg)
291 self.assertIn('FROM', msg)
292 self.assertIn('to', msg)
293 self.assertIn('To', msg)
294 self.assertIn('TO', msg)
297 msg = self._msgobj('msg_01.txt')
300 self.assertEqual(text, str(msg))
301 fullrepr = msg.as_string(unixfrom=True)
307 msg = self._msgobj('msg_01.txt')
308 newpolicy = msg.policy.clone(linesep='\r\n')
309 fullrepr = msg.as_string(policy=newpolicy)
312 g.flatten(msg)
334 msg = email.message_from_bytes(source)
335 self.assertEqual(msg.as_string(), expected)
347 msg = email.message_from_bytes(source)
348 self.assertEqual(msg.as_string(), expected)
351 msg = self._msgobj('msg_01.txt')
354 self.assertEqual(data, bytes(msg))
355 fullrepr = msg.as_bytes(unixfrom=True)
361 msg = self._msgobj('msg_01.txt')
362 newpolicy = msg.policy.clone(linesep='\r\n')
363 fullrepr = msg.as_bytes(policy=newpolicy)
366 g.flatten(msg)
371 msg = email.message_from_string("Content-Type: blarg; baz; boo\n")
372 self.assertEqual(msg.get_param('baz'), '')
375 msg = email.message_from_string("From: foo\n")
376 self.assertEqual(msg.get_filename(), None)
379 msg = email.message_from_string(
381 self.assertEqual(msg.get_filename(), '')
384 msg = email.message_from_string("From: foo\n")
385 self.assertEqual(msg.get_boundary(), None)
389 msg = email.message_from_string(
391 eq(msg.get_params(header='x-header'),
393 msg = email.message_from_string(
395 eq(msg.get_params(header='x-header'),
397 eq(msg.get_params(), None)
398 msg = email.message_from_string(
400 eq(msg.get_params(header='x-header'),
405 msg = Message()
406 msg['Content-Type'] = 'Content-Type: Multipart/mixed; boundary = "CPIMSSMTPC06p5f3tG"'
407 self.assertEqual(msg.get_param('boundary'), 'CPIMSSMTPC06p5f3tG')
411 msg = email.message_from_string(
413 eq(msg.get_param('bar', header='x-header'), 'two')
414 eq(msg.get_param('quuz', header='x-header'), None)
415 eq(msg.get_param('quuz'), None)
416 msg = email.message_from_string(
418 eq(msg.get_param('foo', header='x-header'), '')
419 eq(msg.get_param('bar', header='x-header'), 'one')
420 eq(msg.get_param('baz', header='x-header'), 'two')
428 msg = self._msgobj('msg_22.txt')
429 self.assertEqual(msg.get_payload(1).get_param('name'), 'wibble.JPG')
433 msg = email.message_from_string(
435 self.assertEqual(msg.get_param('name'), 'Jim&&Jill')
436 self.assertEqual(msg.get_param('name', unquote=False),
441 msg = email.message_from_string(
443 self.assertEqual(msg.get_param('bar'), 'baz"foobar"baz')
444 msg = email.message_from_string(
446 self.assertEqual(msg.get_param('bar'), 'baz"foobar"baz')
449 msg = email.message_from_string('Header: exists')
450 self.assertIn('header', msg)
451 self.assertIn('Header', msg)
452 self.assertIn('HEADER', msg)
453 self.assertNotIn('headerx', msg)
457 msg = Message()
458 msg.set_param('charset', 'iso-2022-jp')
459 eq(msg.get_param('charset'), 'iso-2022-jp')
460 msg.set_param('importance', 'high value')
461 eq(msg.get_param('importance'), 'high value')
462 eq(msg.get_param('importance', unquote=False), '"high value"')
463 eq(msg.get_params(), [('text/plain', ''),
466 eq(msg.get_params(unquote=False), [('text/plain', ''),
469 msg.set_param('charset', 'iso-9999-xx', header='X-Jimmy')
470 eq(msg.get_param('charset', header='X-Jimmy'), 'iso-9999-xx')
474 msg = self._msgobj('msg_05.txt')
475 eq(msg.get_params(),
478 old_val = msg.get_param("report-type")
479 msg.del_param("report-type")
480 eq(msg.get_params(),
483 msg.set_param("report-type", old_val)
484 eq(msg.get_params(),
490 msg = Message()
491 msg.add_header('Content-Disposition', 'attachment', filename='bud.gif')
492 msg.del_param('filename', 'content-disposition')
493 self.assertEqual(msg['content-disposition'], 'attachment')
496 msg = Message()
498 msg.del_param('filename', 'content-disposition')
501 msg = Message()
502 msg.add_header('Content-Type', 'text/plain', charset='utf-8')
503 existing_header = msg['Content-Type']
504 msg.del_param('foobar', header='Content-Type')
505 self.assertEqual(msg['Content-Type'], existing_header)
509 msg = Message()
510 self.assertRaises(ValueError, msg.set_type, 'text')
511 msg.set_type('text/plain')
512 eq(msg['content-type'], 'text/plain')
513 msg.set_param('charset', 'us-ascii')
514 eq(msg['content-type'], 'text/plain; charset="us-ascii"')
515 msg.set_type('text/html')
516 eq(msg['content-type'], 'text/html; charset="us-ascii"')
519 msg = Message()
520 msg['X-Content-Type'] = 'text/plain'
521 msg.set_type('application/octet-stream', 'X-Content-Type')
522 self.assertEqual(msg['x-content-type'], 'application/octet-stream')
525 msg = Message()
526 self.assertEqual(msg.get_content_type(), 'text/plain')
529 msg = Message()
530 msg.set_default_type('message/rfc822')
531 self.assertEqual(msg.get_content_type(), 'message/rfc822')
534 msg = self._msgobj('msg_30.txt')
535 self.assertEqual(msg.get_payload(0).get_content_type(),
539 msg = self._msgobj('msg_28.txt')
540 self.assertEqual(msg.get_payload(0).get_content_type(),
544 msg = self._msgobj('msg_03.txt')
545 self.assertEqual(msg.get_content_type(), 'text/plain')
548 msg = self._msgobj('msg_01.txt')
549 self.assertEqual(msg.get_content_type(), 'text/plain')
552 msg = Message()
553 self.assertEqual(msg.get_content_maintype(), 'text')
556 msg = Message()
557 msg.set_default_type('message/rfc822')
558 self.assertEqual(msg.get_content_maintype(), 'message')
561 msg = self._msgobj('msg_30.txt')
562 self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
565 msg = self._msgobj('msg_28.txt')
566 self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
569 msg = self._msgobj('msg_03.txt')
570 self.assertEqual(msg.get_content_maintype(), 'text')
573 msg = self._msgobj('msg_01.txt')
574 self.assertEqual(msg.get_content_maintype(), 'text')
577 msg = Message()
578 self.assertEqual(msg.get_content_subtype(), 'plain')
581 msg = Message()
582 msg.set_default_type('message/rfc822')
583 self.assertEqual(msg.get_content_subtype(), 'rfc822')
586 msg = self._msgobj('msg_30.txt')
587 self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
590 msg = self._msgobj('msg_28.txt')
591 self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
594 msg = self._msgobj('msg_03.txt')
595 self.assertEqual(msg.get_content_subtype(), 'plain')
598 msg = self._msgobj('msg_01.txt')
599 self.assertEqual(msg.get_content_subtype(), 'plain')
602 msg = Message()
603 msg['Content-Type'] = 'no-slash-in-this-string'
604 self.assertEqual(msg.get_content_maintype(), 'text')
607 msg = Message()
608 msg['Content-Type'] = 'no-slash-in-this-string'
609 self.assertEqual(msg.get_content_subtype(), 'plain')
613 msg = Message()
614 msg.add_header('First', 'One')
615 msg.add_header('Second', 'Two')
616 msg.add_header('Third', 'Three')
617 eq(msg.keys(), ['First', 'Second', 'Third'])
618 eq(msg.values(), ['One', 'Two', 'Three'])
619 msg.replace_header('Second', 'Twenty')
620 eq(msg.keys(), ['First', 'Second', 'Third'])
621 eq(msg.values(), ['One', 'Twenty', 'Three'])
622 msg.add_header('First', 'Eleven')
623 msg.replace_header('First', 'One Hundred')
624 eq(msg.keys(), ['First', 'Second', 'Third', 'First'])
625 eq(msg.values(), ['One Hundred', 'Twenty', 'Three', 'Eleven'])
626 self.assertRaises(KeyError, msg.replace_header, 'Fourth', 'Missing')
629 msg = Message()
630 self.assertIsNone(msg.get_content_disposition())
631 msg.add_header('Content-Disposition', 'attachment',
633 self.assertEqual(msg.get_content_disposition(), 'attachment')
634 msg.replace_header('Content-Disposition', 'inline')
635 self.assertEqual(msg.get_content_disposition(), 'inline')
636 msg.replace_header('Content-Disposition', 'InlinE')
637 self.assertEqual(msg.get_content_disposition(), 'inline')
642 msg = Message()
643 msg['content-type'] = 'audio/x-midi'
644 msg['content-transfer-encoding'] = 'base64'
645 msg.set_payload(x)
646 self.assertEqual(msg.get_payload(decode=True),
649 self.assertIsInstance(msg.defects[0],
656 msg = Message()
657 msg['content-type'] = 'text/plain'
658 msg['content-transfer-encoding'] = '8bit'
659 msg.set_payload(x)
660 self.assertEqual(msg.get_payload(decode=True),
667 msg = Message()
668 msg['content-type'] = 'text/plain; charset="utf-8"'
669 msg['content-transfer-encoding'] = '8bit'
670 msg._payload = x
671 self.assertEqual(msg.get_payload(decode=True), x)
675 msg = Message()
676 msg.add_header('Content-Disposition', 'attachment',
679 msg['Content-Disposition'])
682 msg = Message()
683 msg.add_header('Content-Disposition', 'attachment',
687 msg['Content-Disposition'])
690 msg = Message()
691 msg.add_header('Content-Disposition', 'attachment',
695 msg['Content-Disposition'])
698 msg = Message()
699 msg.add_header('Content-Disposition', 'attachment',
703 msg['Content-Disposition'])
706 msg = Message()
707 msg.add_header('Content-Disposition', 'attachment',
711 msg['Content-Disposition'])
715 msg = Message()
716 msg['content-type'] = 'text/plain; charset=%s' % charset
717 msg['content-transfer-encoding'] = 'quoted-printable'
718 msg.set_payload(b'foo=e6=96=87bar')
720 msg.get_payload(decode=True),
726 msg = Message()
727 msg['content-type'] = 'text/plain; charset=%s' % charset
728 msg['content-transfer-encoding'] = 'base64'
729 msg.set_payload(b'Zm9v5paHYmFy')
731 msg.get_payload(decode=True),
738 msg = Message()
739 msg['content-type'] = 'text/plain; charset=%s' % charset
740 msg['content-transfer-encoding'] = encoding
741 msg.set_payload(b"begin 666 -\n)9F]OYI:'8F%R\n \nend\n")
743 msg.get_payload(decode=True),
750 msg = Message()
751 msg.add_header('Content-Disposition', 'inline', foo_bar=None)
752 self.assertEqual("inline; foo-bar", msg['Content-Disposition'])
755 msg = Message()
756 msg.add_header('X-Status', None)
757 self.assertEqual('', msg['X-Status'])
762 msg = Message()
763 msg['Dummy'] = Header('dummy\nX-Injected-Header: test')
764 self.assertRaises(errors.HeaderParseError, msg.as_string)
767 msg = Message()
768 msg['Dummy'] = 'dummy\nX-Injected-Header: test'
769 self.assertRaises(errors.HeaderParseError, msg.as_string)
810 msg = Message()
811 msg.set_charset('us-ascii')
812 eq(msg['content-transfer-encoding'], '7bit')
817 msg = MIMEText('hello world')
818 eq(msg['content-transfer-encoding'], '7bit')
820 msg = MIMEText('hello \xf8 world')
821 eq(msg['content-transfer-encoding'], 'base64')
823 msg = MIMEText('hello \xf8 world', _charset='iso-8859-1')
824 eq(msg['content-transfer-encoding'], 'quoted-printable')
831 msg = MIMEText('文\n', _charset='euc-jp')
832 eq(msg['content-transfer-encoding'], '7bit')
833 eq(msg.as_string(), textwrap.dedent("""\
842 msg = MIMEText('\xe1\xf6\n', 'text', 'ISO-8859-1')
843 self.assertEqual(str(msg), textwrap.dedent("""\
853 msg = MIMEText('\u017c\n', 'text', 'ISO-8859-2')
854 self.assertEqual(str(msg), textwrap.dedent("""\
870 msg = email.message_from_string("""\
879 g.flatten(msg)
927 msg = Message()
928 msg['Subject'] = h
931 g.flatten(msg)
1004 msg = MIMEText('')
1007 msg['X-Foobar-Spoink-Defrobnit'] = (
1012 g.flatten(msg)
1024 msg = Message()
1025 msg['From'] = 'test@dom.ain'
1026 msg['References'] = SPACE.join('<%d@dom.ain>' % i for i in range(10))
1027 msg.set_payload('Test')
1030 g.flatten(msg)
1138 msg = Message()
1139 msg['From'] = 'test@dom.ain'
1140 msg['References'] = SPACE.join(['<foo@dom.ain> '] * 10)
1141 msg.set_payload('Test')
1144 g.flatten(msg)
1155 msg = Message()
1156 msg['From'] = 'test@dom.ain'
1157 msg['References'] = SPACE.join(['<foo@dom.ain>'] * 10) + '; abc'
1158 msg.set_payload('Test')
1161 g.flatten(msg)
1172 msg = Message()
1173 msg['From'] = 'test@dom.ain'
1174 msg['References'] = ('thisverylongheaderhas;semicolons;and,commas,but'
1176 msg.set_payload('Test')
1179 g.flatten(msg)
1240 msg = Message()
1247 msg['Subject'] = h
1248 eq(msg.as_string(maxheaderlen=76), """\
1253 eq(msg.as_string(maxheaderlen=0), """\
1260 msg = Message()
1264 msg['Reply-To'] = header_string
1265 eq(msg.as_string(maxheaderlen=78), """\
1270 msg = Message()
1271 msg['Reply-To'] = Header(header_string,
1273 eq(msg.as_string(maxheaderlen=78), """\
1286 msg = Message()
1287 msg['To'] = to
1288 eq(msg.as_string(maxheaderlen=78), '''\
1332 msg = Message()
1333 msg['Received-1'] = Header(h, continuation_ws='\t')
1334 msg['Received-2'] = h
1336 self.ndiffAssertEqual(msg.as_string(maxheaderlen=78), """\
1350 msg = Message()
1351 msg['Received-1'] = Header(h, header_name='Received-1',
1353 msg['Received-2'] = h
1355 self.ndiffAssertEqual(msg.as_string(maxheaderlen=78), """\
1367 msg = Message()
1371 msg['Face-1'] = t
1372 msg['Face-2'] = Header(t, header_name='Face-2')
1373 msg['Face-3'] = ' ' + t
1376 eq(msg.as_string(maxheaderlen=78), """\
1395 msg = email.message_from_string(m)
1396 eq(msg.as_string(maxheaderlen=78), '''\
1408 msg = Message()
1409 msg['List'] = h
1410 msg['List'] = Header(h, header_name='List')
1411 eq(msg.as_string(maxheaderlen=78), """\
1439 self.msg = Message()
1440 self.msg['From'] = 'aaa@bbb.org'
1441 self.msg.set_payload("""\
1449 g.flatten(self.msg)
1460 g.flatten(self.msg)
1471 msg = email.message_from_string(textwrap.dedent("""\
1487 g.flatten(msg)
1499 msg = email.message_from_bytes(source + b'From R\xc3\xb6lli\n')
1502 g.flatten(msg)
1512 msg = email.message_from_bytes(source)
1599 msg = MIMEApplication(b'\xfa\xfb\xfc\xfd\xfe\xff')
1600 eq(msg.get_content_type(), 'application/octet-stream')
1601 eq(msg['content-transfer-encoding'], 'base64')
1606 msg = MIMEApplication(bytesdata)
1608 eq(msg.get_payload().strip(), '+vv8/f7/')
1609 eq(msg.get_payload(decode=True), bytesdata)
1614 msg = MIMEApplication(bytesdata, _encoder=encoders.encode_7or8bit)
1616 self.assertEqual(msg.get_payload(), '\uFFFD' * len(bytesdata))
1617 self.assertEqual(msg.get_payload(decode=True), bytesdata)
1618 self.assertEqual(msg['Content-Transfer-Encoding'], '8bit')
1621 g.flatten(msg)
1624 self.assertEqual(msg.get_payload(), '\uFFFD' * len(bytesdata))
1633 msg = MIMEApplication(bytesdata, _encoder=encoders.encode_noop)
1635 self.assertEqual(msg.get_payload(), '\uFFFD' * len(bytesdata))
1636 self.assertEqual(msg.get_payload(decode=True), bytesdata)
1639 g.flatten(msg)
1642 self.assertEqual(msg.get_payload(), '\uFFFD' * len(bytesdata))
1648 msg = MIMEApplication(bytesdata, _encoder=encoders.encode_noop)
1649 self.assertEqual(msg.get_payload(decode=True), bytesdata)
1652 g.flatten(msg)
1660 msg = MIMEApplication(bytesdata, _encoder=encoders.encode_quopri)
1661 self.assertEqual(msg.get_payload(), '=FA=FB=FC=FD=FE=FF=20')
1662 self.assertEqual(msg.get_payload(decode=True), bytesdata)
1663 self.assertEqual(msg['Content-Transfer-Encoding'], 'quoted-printable')
1666 g.flatten(msg)
1669 self.assertEqual(msg.get_payload(), '=FA=FB=FC=FD=FE=FF=20')
1675 msg = MIMEApplication(bytesdata, _encoder=encoders.encode_base64)
1676 self.assertEqual(msg.get_payload(), '+vv8/f7/\n')
1677 self.assertEqual(msg.get_payload(decode=True), bytesdata)
1680 g.flatten(msg)
1683 self.assertEqual(msg.get_payload(), '+vv8/f7/\n')
1707 msg = MIMEText('hello there', _charset='us-ascii')
1708 eq(msg.get_charset().input_charset, 'us-ascii')
1709 eq(msg['content-type'], 'text/plain; charset="us-ascii"')
1713 msg = MIMEText('hello there', _charset=charset)
1714 eq(msg.get_charset().input_charset, 'utf-8')
1715 eq(msg['content-type'], 'text/plain; charset="utf-8"')
1716 eq(msg.get_payload(), 'hello there')
1720 msg = MIMEText('hello there', _charset='us-ascii')
1721 eq(msg.get_charset().input_charset, 'us-ascii')
1722 eq(msg['content-type'], 'text/plain; charset="us-ascii"')
1726 msg = MIMEText('hello there')
1727 eq(msg.get_charset(), 'us-ascii')
1728 eq(msg['content-type'], 'text/plain; charset="us-ascii"')
1729 self.assertIn('hello there', msg.as_string())
1734 msg = MIMEText(teststr, _charset='utf-8')
1735 eq(msg.get_charset().output_charset, 'utf-8')
1736 eq(msg['content-type'], 'text/plain; charset="utf-8"')
1737 eq(msg.get_payload(decode=True), teststr.encode('utf-8'))
1817 msg = Parser().parsestr(text)
1818 self.ndiffAssertEqual(text, msg.as_string())
1866 msg = MIMEText('hello world')
1867 outer.attach(msg)
1891 msg = MIMEText('hello world')
1892 outer.attach(msg)
1919 msg = MIMEText('hello world')
1920 outer.attach(msg)
1946 msg = MIMEText('hello world')
1947 outer.attach(msg)
1973 msg = MIMEText('hello world')
1974 outer.attach(msg)
2000 msg = MIMEText('hello world')
2001 outer.attach(msg)
2022 msg = self._msgobj('msg_36.txt')
2023 eq(len(msg.get_payload()), 2)
2024 msg1 = msg.get_payload(1)
2037 msg = self._msgobj('msg_37.txt')
2038 self.assertEqual(len(msg.get_payload()), 3)
2046 msg = self._msgobj('msg_38.txt')
2048 iterators._structure(msg, sfp)
2064 msg = self._msgobj('msg_39.txt')
2066 iterators._structure(msg, sfp)
2077 msg = self._msgobj('msg_40.txt')
2078 self.assertEqual(msg.as_string(), '''\
2093 msg = email.message_from_string('''\
2106 self.assertTrue(msg.is_multipart())
2107 eq(msg.get_boundary(), ' XXXX')
2108 eq(len(msg.get_payload()), 2)
2137 msg = self._msgobj('msg_14.txt')
2138 eq(msg.get_content_type(), 'text/plain')
2139 eq(msg.get_content_maintype(), 'text')
2140 eq(msg.get_content_subtype(), 'plain')
2144 msg = self._msgobj('msg_15.txt')
2146 inner = msg.get_payload(0)
2154 msg = self._msgobj('msg_25.txt')
2155 self.assertIsInstance(msg.get_payload(), str)
2156 self.assertEqual(len(msg.defects), 2)
2157 self.assertIsInstance(msg.defects[0],
2159 self.assertIsInstance(msg.defects[1],
2187 msg = self._str_msg(
2189 self.assertEqual(len(msg.defects), 1)
2190 self.assertIsInstance(msg.defects[0],
2195 msg = self._str_msg(self.multipart_msg.format(''))
2196 self.assertEqual(len(msg.defects), 0)
2201 msg = self._str_msg(
2204 self.assertEqual(len(msg.defects), 0)
2210 msg = Message()
2212 msg['Content-Type'] = 'text'
2213 eq(msg.get_content_maintype(), 'text')
2214 eq(msg.get_content_subtype(), 'plain')
2215 eq(msg.get_content_type(), 'text/plain')
2217 del msg['content-type']
2218 msg['Content-Type'] = 'foo'
2219 eq(msg.get_content_maintype(), 'text')
2220 eq(msg.get_content_subtype(), 'plain')
2221 eq(msg.get_content_type(), 'text/plain')
2225 g.flatten(msg)
2230 msg = self._msgobj('msg_31.txt')
2231 eq(msg.get_payload(), """\
2247 msg = self._msgobj('msg_35.txt')
2248 eq(msg.as_string(), """\
2258 msg = self._msgobj('msg_41.txt')
2259 self.assertTrue(hasattr(msg, 'defects'))
2260 self.assertEqual(len(msg.defects), 2)
2261 self.assertIsInstance(msg.defects[0],
2263 self.assertIsInstance(msg.defects[1],
2286 msg = email.message_from_string(m)
2287 eq(msg.keys(), ['Subject'])
2288 eq(msg.get_payload(), 'body')
2289 eq(len(msg.defects), 1)
2290 self.assertDefectsEqual(msg.defects,
2292 eq(msg.defects[0].line, ' Line 1\n')
2300 msg = self._str_msg('Subject: test\nnot a header\nTo: abc\n\nb\n')
2301 self.assertEqual(msg.keys(), ['Subject'])
2302 self.assertEqual(msg.get_payload(), 'not a header\nTo: abc\n\nb\n')
2303 self.assertDefectsEqual(msg.defects,
2489 msg = self._msgobj('msg_11.txt')
2490 eq(msg.get_content_type(), 'message/rfc822')
2491 payload = msg.get_payload()
2502 msg = self._msgobj('msg_16.txt')
2503 eq(msg.get_content_type(), 'multipart/report')
2504 self.assertTrue(msg.is_multipart())
2505 eq(len(msg.get_payload()), 3)
2507 subpart = msg.get_payload(0)
2527 subpart = msg.get_payload(1)
2545 subpart = msg.get_payload(2)
2560 msg = Message()
2561 msg['From'] = 'aperson@dom.ain'
2562 msg['To'] = 'bperson@dom.ain'
2563 msg['Subject'] = 'Test'
2564 msg.preamble = 'MIME message'
2565 msg.epilogue = 'End of MIME message\n'
2568 msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
2569 msg.attach(msg1)
2570 msg.attach(msg2)
2573 g.flatten(msg)
2578 msg = Message()
2579 msg['From'] = 'aperson@dom.ain'
2580 msg['To'] = 'bperson@dom.ain'
2581 msg['Subject'] = 'Test'
2582 msg.preamble = 'MIME message'
2583 msg.epilogue = ''
2586 msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
2587 msg.attach(msg1)
2588 msg.attach(msg2)
2589 eq(msg.as_string(), """\
2614 msg = email.message_from_file(fp)
2615 container1 = msg.get_payload(0)
2618 container2 = msg.get_payload(1)
2631 msg = email.message_from_file(fp)
2632 container1 = msg.get_payload(0)
2635 container2 = msg.get_payload(1)
2723 msg = MIMEMultipart(_subparts=(text1, text2))
2724 eq(len(msg.get_payload()), 2)
2725 eq(msg.get_payload(0), text1)
2726 eq(msg.get_payload(1), text2)
2729 msg = MIMEMultipart()
2730 self.assertTrue(msg.is_multipart())
2733 msg = MIMEMultipart()
2734 msg['To'] = 'a@b.com'
2735 msg['To'] = 'c@d.com'
2736 self.assertEqual(msg.get_all('to'), ['a@b.com', 'c@d.com'])
2739 msg = MIMEMultipart(policy=email.policy.default)
2740 msg['To'] = 'a@b.com'
2742 msg['To'] = 'c@d.com'
2750 msg = MIMENonMultipart('text', 'plain')
2751 self.assertFalse(msg.is_multipart())
2754 msg = Message()
2755 msg['Subject'] = 'subpart 1'
2757 self.assertRaises(errors.MultipartConversionError, r.attach, msg)
2772 msg = email.message_from_string(data)
2773 return msg, data
2775 def _idempotent(self, msg, text, unixfrom=False): argument
2779 g.flatten(msg, unixfrom=unixfrom)
2784 msg, text = self._msgobj('msg_01.txt')
2785 eq(msg.get_content_type(), 'text/plain')
2786 eq(msg.get_content_maintype(), 'text')
2787 eq(msg.get_content_subtype(), 'plain')
2788 eq(msg.get_params()[1], ('charset', 'us-ascii'))
2789 eq(msg.get_param('charset'), 'us-ascii')
2790 eq(msg.preamble, None)
2791 eq(msg.epilogue, None)
2792 self._idempotent(msg, text)
2796 msg, text = self._msgobj('msg_03.txt')
2797 eq(msg.get_content_type(), 'text/plain')
2798 eq(msg.get_params(), None)
2799 eq(msg.get_param('charset'), None)
2800 self._idempotent(msg, text)
2803 msg, text = self._msgobj('msg_04.txt')
2804 self._idempotent(msg, text)
2807 msg, text = self._msgobj('msg_02.txt')
2808 self._idempotent(msg, text)
2811 msg, text = self._msgobj('msg_27.txt')
2812 self._idempotent(msg, text)
2815 msg, text = self._msgobj('msg_28.txt')
2816 self._idempotent(msg, text)
2819 msg, text = self._msgobj('msg_06.txt')
2820 self._idempotent(msg, text)
2823 msg, text = self._msgobj('msg_05.txt')
2824 self._idempotent(msg, text)
2827 msg, text = self._msgobj('msg_16.txt')
2828 self._idempotent(msg, text)
2831 msg, text = self._msgobj('msg_21.txt')
2832 self._idempotent(msg, text)
2835 msg, text = self._msgobj('msg_23.txt')
2836 self._idempotent(msg, text)
2839 msg, text = self._msgobj('msg_24.txt')
2840 self._idempotent(msg, text)
2843 msg, text = self._msgobj('msg_31.txt')
2844 self._idempotent(msg, text)
2847 msg, text = self._msgobj('msg_32.txt')
2848 self._idempotent(msg, text)
2851 msg, text = self._msgobj('msg_33.txt')
2852 self._idempotent(msg, text)
2855 msg, text = self._msgobj('msg_34.txt')
2856 self._idempotent(msg, text)
2859 msg, text = self._msgobj('msg_12a.txt')
2860 self._idempotent(msg, text)
2863 msg, text = self._msgobj('msg_36.txt')
2864 self._idempotent(msg, text)
2867 msg, text = self._msgobj('msg_43.txt')
2868 self._idempotent(msg, text, unixfrom=True)
2871 msg, text = self._msgobj('msg_45.txt')
2872 self._idempotent(msg, text)
2877 msg, text = self._msgobj('msg_05.txt')
2878 eq(msg.get_content_type(), 'multipart/report')
2881 for pk, pv in msg.get_params():
2885 eq(msg.preamble, 'This is a MIME-encapsulated message.' + self.linesep)
2886 eq(msg.epilogue, self.linesep)
2887 eq(len(msg.get_payload()), 3)
2889 msg1 = msg.get_payload(0)
2892 msg2 = msg.get_payload(1)
2895 msg3 = msg.get_payload(2)
2907 msg, text = self._msgobj('msg_06.txt')
2909 eq(msg.get_content_type(), 'message/rfc822')
2912 payload = msg.get_payload()
2928 msg = email.message_from_string(text)
2933 g.flatten(msg)
2940 msg = email.message_from_file(fp)
2945 g.flatten(msg)
2956 msg = email.message_from_string(text, MyMessage)
2957 self.assertIsInstance(msg, MyMessage)
2961 msg = email.message_from_string(text, MyMessage)
2962 for subpart in msg.walk():
2971 msg = email.message_from_file(fp, MyMessage)
2972 self.assertIsInstance(msg, MyMessage)
2975 msg = email.message_from_file(fp, MyMessage)
2976 for subpart in msg.walk():
2983 msg = self._str_msg("Subject: test\n\ntest", MyMessage)
2984 self.assertIsInstance(msg, MyMessage)
3309 msg = Message()
3310 msg.add_header('content-disposition', 'attachment',
3312 eq(msg.get_filename(), 'foo\\wacky"name')
3320 msg = Message()
3321 msg['Content-Type'] = 'text/plain; charset=UTF-8'
3322 eq(msg['content-type'], 'text/plain; charset=UTF-8')
3323 charsets = msg.get_charsets()
3328 msg.set_payload(b'hello world', charset=charset)
3329 eq(msg.get_payload(), 'aGVsbG8gd29ybGQ=\n')
3330 eq(msg.get_payload(decode=True), b'hello world')
3331 eq(msg['content-transfer-encoding'], 'base64')
3333 msg = Message()
3334 msg['Content-Type'] = 'text/plain; charset="US-ASCII"'
3335 charsets = msg.get_charsets()
3340 msg.set_payload('hello world', charset=charset)
3341 eq(msg.get_payload(), 'hello world')
3342 eq(msg['content-transfer-encoding'], '7bit')
3355 msg = self._msgobj('msg_43.txt')
3357 iterators._structure(msg, sfp)
3414 msg = email.message_from_string(msgtxt)
3417 g.flatten(msg)
3425 msg = email.message_from_string(msgtxt_nl)
3428 g.flatten(msg, linesep='\r\n')
3437 msg = email.message_from_bytes(msgtxt_nl)
3440 g.flatten(msg, linesep='\r\n')
3471 msg = self._msgobj('msg_01.txt')
3472 it = iterators.body_line_iterator(msg)
3475 neq(EMPTYSTRING.join(lines), msg.get_payload())
3477 msg = self._msgobj('msg_02.txt')
3478 it = iterators.body_line_iterator(msg)
3486 msg = self._msgobj('msg_04.txt')
3487 it = iterators.typed_subpart_iterator(msg, 'text')
3503 msg = self._msgobj('msg_03.txt')
3504 it = iterators.typed_subpart_iterator(msg, 'text', 'plain')
3579 msg = self.parse("First: val\n: bad\nSecond: val")
3580 self.assertEqual(msg['First'], 'val')
3581 self.assertEqual(msg['Second'], 'val')
3623 msg = HeaderParser().parse(fp)
3624 eq(msg['from'], 'ppp-request@zzz.org')
3625 eq(msg['to'], 'ppp@zzz.org')
3626 eq(msg.get_content_type(), 'multipart/mixed')
3627 self.assertFalse(msg.is_multipart())
3628 self.assertIsInstance(msg.get_payload(), str)
3634 msg = email.parser.BytesHeaderParser().parse(fp)
3635 eq(msg['from'], 'ppp-request@zzz.org')
3636 eq(msg['to'], 'ppp@zzz.org')
3637 eq(msg.get_content_type(), 'multipart/mixed')
3638 self.assertFalse(msg.is_multipart())
3639 self.assertIsInstance(msg.get_payload(), str)
3640 self.assertIsInstance(msg.get_payload(decode=True), bytes)
3671 msg = email.message_from_string("""\
3681 eq(msg['subject'], 'the next line has a space on it\n ')
3682 eq(msg['message-id'], 'spam')
3683 eq(msg.get_payload(), "Here's the message body\n")
3689 msg = email.message_from_string("""\
3699 eq(msg['subject'], 'the next line has a space on it\n ')
3700 eq(msg['message-id'], 'spam')
3701 eq(msg.get_payload(), "Here's the message body\n")
3706 msg = Parser().parse(fp)
3707 eq(len(msg.get_payload()), 2)
3708 part1 = msg.get_payload(0)
3711 part2 = msg.get_payload(1)
3718 msg = email.message_from_string(text)
3721 g.flatten(msg, linesep='\r\n')
3730 msg = email.message_from_file(fp)
3737 eq(msg.is_multipart(), 1)
3738 eq(len(msg.get_payload()), 2)
3739 part1 = msg.get_payload(0)
3748 part2 = msg.get_payload(1)
3762 msg = email.message_from_string(NL.join(lines))
3763 self.assertEqual(msg['date'], 'Tue, 20 Aug 2002 16:43:45 +1000')
3772 msg = email.message_from_string(m)
3773 eq(msg.get('Header'), value1)
3774 eq(msg.get('Next-Header'), value2)
3779 msg = email.message_from_string(m)
3780 eq(len(msg), 3)
3781 eq(sorted(field for field in msg), ['!"#QUX;~', '>From', 'From'])
3782 eq(msg.get_payload(), 'body')
3787 msg = email.message_from_string(m)
3788 eq(len(msg.keys()), 0)
3793 msg = email.message_from_string(m)
3794 headers = msg.keys()
3797 eq(msg.get_payload(), 'body')
3815 msg = email.message_from_string(m)
3816 self.assertTrue(msg.get_payload(0).get_payload().endswith('\r\n'))
3842 msg = email.message_from_bytes(m)
3843 self.assertEqual(msg.get_payload(), "pöstal\n")
3844 self.assertEqual(msg.get_payload(decode=True),
3851 msg = email.message_from_bytes(m)
3852 self.assertEqual(msg.get_payload(), "p\uFFFD\uFFFDstal\n")
3853 self.assertEqual(msg.get_payload(decode=True),
3869 msg = email.message_from_bytes(m)
3870 self.assertEqual(msg.get_payload(), 'p=C3=B6stál\n')
3871 self.assertEqual(msg.get_payload(decode=True),
3884 msg = email.message_from_bytes(m)
3885 self.assertEqual(msg.get_payload(), 'p=C3=B6st\uFFFD\uFFFDl\n')
3886 self.assertEqual(msg.get_payload(decode=True),
3897 msg = email.message_from_bytes(m)
3898 self.assertEqual(msg.get_payload(decode=True),
3900 self.assertIsInstance(msg.defects[0],
3909 msg = email.message_from_bytes(m)
3910 self.assertEqual(msg.get_payload(decode=True),
3928 msg = email.message_from_bytes(self.headertest_msg)
3929 self.assertEqual(str(msg.get('to')), 'b\uFFFD\uFFFDz')
3930 self.assertEqual(str(msg['to']), 'b\uFFFD\uFFFDz')
3933 msg = email.message_from_bytes(self.headertest_msg)
3934 self.assertEqual(str(msg),
3946 msg = email.message_from_bytes(self.headertest_msg)
3947 self.assertListEqual([str(x) for x in msg.values()],
3957 msg = email.message_from_bytes(self.headertest_msg)
3958 self.assertListEqual([(str(x), str(y)) for (x, y) in msg.items()],
3969 msg = email.message_from_bytes(self.headertest_msg)
3970 self.assertListEqual([str(x) for x in msg.get_all('from')],
3975 msg = email.message_from_bytes(textwrap.dedent("""\
3978 self.assertEqual(msg.get_content_type(), "text/pl\uFFFDin")
3979 self.assertEqual(msg.get_content_maintype(), "text")
3980 self.assertEqual(msg.get_content_subtype(), "pl\uFFFDin")
3984 msg = email.message_from_bytes(
3986 self.assertEqual(msg.get_params(header='x-header'),
3988 self.assertEqual(msg.get_param('Foo', header='x-header'), '\uFFFdne')
3990 self.assertEqual(msg.get_param('b\xa7r', header='x-header'), None)
3994 msg = email.message_from_bytes(textwrap.dedent("""\
3998 self.assertEqual(msg.get_param('title'),
4002 msg = email.message_from_bytes(textwrap.dedent("""\
4006 msg.set_param('title', 'test')
4007 self.assertEqual(msg.get_param('title'), 'test')
4010 msg = email.message_from_bytes(textwrap.dedent("""\
4014 msg.del_param('title')
4015 self.assertEqual(msg.get_param('title'), None)
4016 self.assertEqual(msg.get_content_maintype(), 'text')
4019 msg = email.message_from_bytes(textwrap.dedent("""\
4025 self.assertEqual(msg.get_payload(), 'payload\n')
4026 self.assertEqual(msg.get_payload(decode=True), b'payload\n')
4041 msg = email.message_from_bytes(self.non_latin_bin_msg)
4043 email.generator.BytesGenerator(out).flatten(msg)
4048 msg = email.message.Message()
4050 email.generator.BytesGenerator(out).flatten(msg)
4067 msg = email.message_from_bytes(self.non_latin_bin_msg)
4069 email.generator.Generator(out).flatten(msg)
4073 msg = email.message_from_bytes(self.non_latin_bin_msg)
4075 BytesGenerator(out).flatten(msg)
4077 Generator(StringIO()).flatten(msg) # Should not mutate msg!
4079 BytesGenerator(out).flatten(msg)
4086 msg = email.message_from_bytes(self.non_latin_bin_msg)
4088 email.generator.BytesGenerator(out).flatten(msg, unixfrom=True)
4154 msg = email.message_from_bytes(text)
4157 g.flatten(msg, linesep='\r\n')
4200 msg = email.message_from_bytes(source)
4203 g.flatten(msg)
4241 msg = email.message_from_bytes(data)
4242 return msg, data
4244 def _idempotent(self, msg, data, unixfrom=False): argument
4247 g.flatten(msg, unixfrom=unixfrom, linesep=self.linesep)
5041 msg = email.message_from_string("EmptyHeader:")
5042 self.assertEqual(str(msg), "EmptyHeader: \n\n")
5045 msg = Message()
5046 msg['SomeHeader'] = ' value with leading ws'
5047 self.assertEqual(str(msg), "SomeHeader: value with leading ws\n\n")
5061 msg = self._msgobj('msg_29.txt')
5062 eq(msg.get_param('title'),
5064 eq(msg.get_param('title', unquote=False),
5069 msg = Message()
5070 msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
5072 eq(msg.get_param('title'),
5074 msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
5076 eq(msg.get_param('title'),
5078 msg = self._msgobj('msg_01.txt')
5079 msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
5081 eq(msg.as_string(maxheaderlen=78), """\
5105 msg = Message()
5106 msg.set_param('title', 'foo')
5107 self.assertEqual(msg['content-type'], 'text/plain; title="foo"')
5108 msg.set_param('title', 'bar', requote=False)
5109 self.assertEqual(msg['content-type'], 'text/plain; title=bar')
5111 msg.set_param('title', "(bar)bell", requote=False)
5112 self.assertEqual(msg['content-type'], 'text/plain; title="(bar)bell"')
5116 msg = self._msgobj('msg_01.txt')
5117 msg.set_param('foo', 'bar', charset='us-ascii', language='en')
5118 msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
5120 msg.del_param('foo', header='Content-Type')
5121 eq(msg.as_string(maxheaderlen=78), """\
5149 msg = self._msgobj('msg_32.txt')
5150 eq(msg.get_content_charset(), 'us-ascii')
5161 msg = email.message_from_string(m)
5162 self.assertEqual(msg.get_filename(),
5164 self.assertEqual(m, msg.as_string())
5175 msg = email.message_from_string(m)
5176 self.assertEqual(msg.get_filename(),
5178 self.assertEqual(m, msg.as_string())
5190 msg = email.message_from_string(m)
5191 param = msg.get_param('NAME')
5206 msg = email.message_from_string(m)
5207 self.assertEqual(msg.get_filename(),
5219 msg = email.message_from_string(m)
5220 self.assertEqual(msg.get_filename(),
5233 msg = email.message_from_string(m)
5235 msg.get_filename(),
5246 msg = email.message_from_string(m)
5248 msg.get_filename(),
5259 msg = email.message_from_string(m)
5260 self.assertEqual(msg.get_boundary(),
5272 msg = email.message_from_string(m)
5273 self.assertEqual(msg.get_content_charset(),
5285 msg = email.message_from_string(m)
5286 self.assertEqual(msg.get_filename(),
5294 msg = email.message_from_string(m)
5297 self.assertEqual(msg.get_content_charset(), None)
5304 msg = email.message_from_string(m)
5307 self.assertEqual(msg.get_content_charset(), None)
5317 msg = email.message_from_string(m)
5318 self.assertEqual(msg.get_filename(),
5327 msg = email.message_from_string(m)
5328 self.assertEqual(msg.get_filename(), 'myfile.txt')
5337 msg = email.message_from_string(m)
5338 charset, language, s = msg.get_param('name')
5349 msg = email.message_from_string(m)
5350 param = msg.get_param('name')
5359 msg = email.message_from_string(m)
5361 msg.get_filename(),
5369 msg = email.message_from_string(m)
5371 msg.get_filename(),
5382 msg = email.message_from_string(m)
5383 charset, language, s = msg.get_param('name')
5395 msg = email.message_from_string(m)
5396 param = msg.get_param('name')
5407 msg = email.message_from_string(m)
5408 eq(msg.get_param('name'), "Frank's Document")
5420 msg = email.message_from_string(m)
5421 charset, language, s = msg.get_param('name')
5437 msg = email.message_from_string(m)
5438 charset, language, s = msg.get_param('name')
5463 msg = email.message_from_string(m)
5474 msg = email.message_from_string(original)
5475 return original, msg
5486 original, msg = self._msg_and_obj('msg_45.txt')
5487 result = msg.as_string()
5491 original, msg = self._msg_and_obj('msg_45.txt')
5492 result = msg.as_string(maxheaderlen=60)
5496 original, msg = self._msg_and_obj('msg_45.txt')
5498 Generator(fp).flatten(msg)