Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/mailparser/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,12 @@ def __getattr__(self, name):
# object headers
elif name_header in ADDRESSES_HEADERS:
h = decode_header_part(self.message.get(name_header, six.text_type()))
return email.utils.getaddresses([h])
h_parsed = email.utils.getaddresses([h], strict=True)
return (
h_parsed
if h_parsed != [("", "")]
else email.utils.getaddresses([h], strict=False)
)

# others headers
else:
Expand Down
102 changes: 102 additions & 0 deletions tests/mails/mail_test_17
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
Received: from apiron13.triara.com (200.57.129.98) by APCNHUB11.correo.local
(172.18.31.175) with Microsoft SMTP Server id 14.3.498.0; Mon, 10 Oct 2022
15:11:35 -0500
Authentication-Results: mailb.triara.com; spf=None smtp.mailfrom=www-data@vps-051e4cda.vps.ovh.net
Received-SPF: None (mailb.triara.com: no sender authenticity
information available from domain of
www-data@vps-051e4cda.vps.ovh.net) identity=mailfrom;
client-ip=152.228.133.10; receiver=mailb.triara.com;
envelope-from="www-data@vps-051e4cda.vps.ovh.net";
x-sender="www-data@vps-051e4cda.vps.ovh.net";
x-conformance=spf_only
X-IPAS-Result: =?us-ascii?q?A0C0kgB4e0RjYQqF5JhaGgEBAQEBKwEBAQEDAQEBAQEBA?=
=?us-ascii?q?QMBAQEBAgIBAQEBAgEJAYFmTFMbAgFlBzFJKwEpEB8EC0IDA4RLXIgihXEtg?=
=?us-ascii?q?yULiwaKFWSFYyKBAgNfAQEBAQEBAQEBBAEEEgIRDwgGBAEBhVYBAQeEHAIjT?=
=?us-ascii?q?QECBAEBAQEDAgMBAQEBAQEDAQEBBAEBAQIBAwQEB0kFEgorhWgNgiIBhEkag?=
=?us-ascii?q?RkCBEobgweDDxEDBQulbodVgTKBAYNQAYELg1gngRgQgSYVAgEBAYFRhT4Fg?=
=?us-ascii?q?TgBgwqCJ4IvJ4FnQhKBA4U4Q08CAQEBF4ITgwoYgk4EmTN7BFIDMxEdEyMBC?=
=?us-ascii?q?QMLdxgDFAMFIQcDGQ8jDQ0EHQwDAwUlAwICGwcCAgMCBhMFAgJNNAgECAQrJ?=
=?us-ascii?q?A8FAgcvBQQvAh4EBQYRCAIWAgYEBAQEFQIQCAIIJhcHEzMZAQVZDgkhHAkfD?=
=?us-ascii?q?QUGEwMgbwVCDygvaSsdGweBDCokBBUDBAQDAgYTAyACDSkxFAQpEw8tBylxC?=
=?us-ascii?q?QIDImoDAwQoLAMJQAcoJAQ4B1g6BQMCECI8BgMJAwIkWYEkDRkFAw0XJggFN?=
=?us-ascii?q?xsECDwCBQZSEwIKEgMSDwkkSQ9KPjsXCB8PlVxigRE3AgEPCkFQLi6CR4EGg?=
=?us-ascii?q?jiWPYZ2hSsJgjSNH49qB4JOJG+LPpUwgRWEMaNAlxCJXYNjhw0CAoFEjAqFU?=
=?us-ascii?q?DWBWgyBW4FMWAEBggABCToOGQ+NfoMrhFqBI4R1VUQxAgEBGR4CBgEKAQEDC?=
=?us-ascii?q?QGCOohaAQE?=
IronPort-PHdr: A9a23:spSpFxSrnRjDE/aKheFpfAHQh9psomOdAWYlg6HP6ppLe6Wn9dL+J
k3W//wrh1jMDs3A8/wRre3Qvuj7XHAYp5OIsXQMaptJAgAaloAalhApKNCdEgijcafnMyc2F
YJcTEQj+G+7d05YBK4SfnX0pXu/pX4XExT7P0xpPOX8AIeUhMOyhai0/NXIbgNEiSD1aK5uL
BiwsQTat9UH5OkqYqc3xBzTp3JUeuNQjWp2LFOXlhz464++5plmuyhXvvsg8YZHX8CYN+wnU
qMdAD06Okgr/Nau7USaQFeE6nJaTH0N1B1WA07D4Q27Fpb9vy3mt/ZsjSyTPMn4V7cxClHAp
+9gTB7ljjtCNiZsqTyNzJYq3OQC+0nn/kQsi5TZa4yUKvdkK6bUfNcQA3ZbX89LXmpKBYbvC
ulHR+cHI+tcqJHw4lUUqh7rTxazG6bjwyNBrmHuxuhijr0sTQrK1Uo+B8lIt2rU6tP4KO1BN
IL9hLmN1jjFY/5MjH3i95eNfhk9qNmSRak1KZeIxBUkGwqDkE2L74v7P3WT2/hH4A35p6JwE
OmojWAgsQR4pDOik9w0hL7OgIYEorgr3Tth28NteIS1FEV3aJi6CIAWsD+acY17XpF6K1w=
IronPort-Data: A9a23:P1Ts4KAPg74kWhVW/xXjw5YqxClBgxIJ4kV8jS/XYbTApDoj0DRTm
2AeXTvTO/uNM2v9e91wYIqzoEoOuZKBmIMyTANkpHpgZkwRpJueD7x1DKtR0wB+jCHnZBg6h
ynLQoCYdKjYdleF+lH3dOCJQUBUjcmgXqD7BPPPJhd/TAplTDZJoR94kobVuKYw6TSCK17L6
I6aT/H3Ygf/gWcsazpMscpvlTs21BjMkGJA1rABTa0T1LPuvyF9JI4SI6i3M0z5TuF8dgJtb
7+epF0R1jqxEyYFUrtJoJ6iGqE5auS60Ty1t5Zjc/PKbi6uCcAF+v1T2PI0MS+7gtgS9jx74
I0lWZeYEW/FMkBQ8QgQe0EwLs1wAUFJ0IPuPWSdtcGP9HzfaULK+PJlPX4nAYJNr46bAUkWn
RAZAC4VdVXb2ru7nLm3Q69ynt9lK9freoUSphmMzxmAUKxgG8qTBfyRvpkBhF/chegWdRraT
9UGdn9jZQjJSwNXIRJPVcszwOykjz/hayYer0yV46w6/wA/ySQoiOO1aYeOJ4HULSlTtkiiu
TzlrlvTOx8HOte/1j+12Wqx2taayEsXX6pITOXlp5aGmma7zWsWEBkXXF2wrNGwiUe3XdlWM
EUY9yApqbM7skesS5/4T3WFTGWsoAYHHoINSuBm4w2EjLTM+ECeGGhCSDNdADA7iCMobQADy
kOrm971Pg12qoSzcnWWx4iFkTznbED5MlQ+TSMDSAIE5fzqr4cykg/DQ75f/Eid0YGd9dbYn
GvikcQuu1kApZJbh/jrpzgrlxr2/cOZEWbZ8y2KBjrN0+9vWGKyT6KSgWU3DMqsz67AETFtW
UTofeDDt4gz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJvm8jeB03bJ1cJWa0C
KM2he+3zM8IVJdNRf8sC79d9+x7lPG4fTgYfquLMYARO8QZmPGvpXo0PhTJt4wSrKTcuftnY
crKGSpdJXEECex8xSHeegvu+e9D+8zK/kuCFfjTlkz5uZLHPS79YelfYDOzghURqfjsTPP9r
YoCaqNnCnx3C4XDX8Ug2ddMfABUdylgWMGeRg4+XrfrHzeK0VoJU5f5qY7NsaQ+90iJvo8kP
01RmGcAoLY8uZEDARuScTU7NeriAZ1zpDQlJTdqOkionX4ufe5DKUvZm4QfJdEayQC78cNJc
g==
IronPort-HdrOrdr: A9a23:IE0U3q0tRN9Bymkrd2qGBQqjBNUkLtp133Aq2lEZdPWPSL36qy
nAppkmPHPP6Qr5O0tBpTn/AsW9qBrnnPYfi7X5W43SPjUO01HHEGgN1+Tf/wE=
X-IronPort-Anti-Spam-Filtered: true
Subject: =?UTF-8?B?VHJhbnNmZXJlbmNpYSBJbnRlcmJhbmNhcmlhIEJhbmNhIGVuIEzDrW5lYQ==?=
X-IronPort-AV: E=Sophos;i="5.95,173,1661835600";
d="html'217?zip'217,48?scan'217,48,208,48,217";a="1030153556"
X-MGA-submission: =?us-ascii?q?MDFfnUeOjYtx/kPz1rQrHfQrNIBGcOsaef6Pxd?=
=?us-ascii?q?fYLajkW0aqpJS8e/pX+Kfz9sRkdcd5xyISxIOdF+YXiKE+ILG7RI8546?=
=?us-ascii?q?G6AgtU3PrBER1OQ5hnnprxu8FcYwakAkY4OSc=3D?=
Received: from vps-051e4cda.vps.ovh.net ([152.228.133.10]) by
apiron13.triara.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 10 Oct 2022
15:11:34 -0500
Received: from vps-051e4cda.vps.ovh.net (localhost [127.0.0.1]) by
vps-051e4cda.vps.ovh.net (8.15.2/8.15.2/Debian-10) with ESMTP id
29AKBWdZ005349 for <compliance@akaancasadebolsa.com.mx>; Mon, 10 Oct 2022
20:11:32 GMT
Received: (from www-data@localhost) by vps-051e4cda.vps.ovh.net
(8.15.2/8.15.2/Submit) id 29AKBWwn005317; Mon, 10 Oct 2022 20:11:32 GMT
Date: Mon, 10 Oct 2022 20:11:32 +0000
Message-ID: <202210102011.29AKBWwn005317@vps-051e4cda.vps.ovh.net>
To: <compliance@akaancasadebolsa.com.mx>
From: =?UTF-8?B?bm90aWZpY2FjY2lvbi1jbGllbnRlc0BiYnZhLm14?=
<notificaccion-clientes@bbva.mx>
Reply-To: <info@alejandrosalcedo.es>
Return-Path: www-data@vps-051e4cda.vps.ovh.net
X-MS-Exchange-Organization-AuthSource: APCNHUB11.correo.local
X-MS-Exchange-Organization-AuthAs: Anonymous
Content-Type: multipart/mixed; boundary="B_3748259537_1769991493"
MIME-Version: 1.0

--B_3748259537_1769991493
Content-Type: multipart/alternative; boundary="B_3748259537_911412125"

--B_3748259537_911412125
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable



--B_3748259537_911412125
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<html><head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8">
</head>
<body>Test</body>
</html>

--B_3748259537_911412125--
8 changes: 8 additions & 0 deletions tests/test_mail_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
mail_test_14 = os.path.join(base_path, "mails", "mail_test_14")
mail_test_15 = os.path.join(base_path, "mails", "mail_test_15")
mail_test_16 = os.path.join(base_path, "mails", "mail_test_16")
mail_test_17 = os.path.join(base_path, "mails", "mail_test_17")
mail_malformed_1 = os.path.join(base_path, "mails", "mail_malformed_1")
mail_malformed_2 = os.path.join(base_path, "mails", "mail_malformed_2")
mail_malformed_3 = os.path.join(base_path, "mails", "mail_malformed_3")
Expand Down Expand Up @@ -702,3 +703,10 @@ def test_issue_139(self):
"Subject": "Test spam mail (GTUBE)",
"To": [("Recipient", "recipient@example.net")],
}

def test_issue_136(self):
mail = mailparser.parse_from_file(mail_test_17)
assert mail.from_ == [
("", "notificaccion-clientes@bbva.mx"),
("", "notificaccion-clientes@bbva.mx"),
]