def METHOD_NAME(self, first, second):
    with self.subTest('body'):
        self.assertEqual(first.is_multipart(), second.is_multipart())
        if not first.is_multipart():
            self.assertEqual(first.get_payload(), second.get_payload())
        else:
            for f, s in zip(first.walk(), second.walk()):
                if f.is_multipart() or s.is_multipart():
                    self.assertEqual(first.is_multipart(),
                                     second.is_multipart())
                else:
                    self.assertEqual(f.get_payload(), s.get_payload())
    with self.subTest('headers'):
        self.assertListEqual(first.values(), second.values())