summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/model/mail.py
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-02-23 15:54:10 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-02-23 15:54:21 -0300
commitc37c3b425021eb485376b8b776c248afb2a9b2a6 (patch)
tree2db09ec861f719e72c9722211d396e39233fe4a4 /service/pixelated/adapter/model/mail.py
parentcea009cf6c48b0aeaf51cd37d2edf52bda92ff20 (diff)
for #174, only 5.X.X are permanent bounces
Diffstat (limited to 'service/pixelated/adapter/model/mail.py')
-rw-r--r--service/pixelated/adapter/model/mail.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/service/pixelated/adapter/model/mail.py b/service/pixelated/adapter/model/mail.py
index a8d752c5..3ea7c95a 100644
--- a/service/pixelated/adapter/model/mail.py
+++ b/service/pixelated/adapter/model/mail.py
@@ -391,7 +391,10 @@ class PixelatedMail(Mail):
def _extract_bounced_address(self, part):
part_header = dict(part.get('headers', {}))
if 'Final-Recipient' in part_header:
- return part_header['Final-Recipient'].split(';')[1].strip()
+ if self._bounce_permanent(part_header):
+ return part_header['Final-Recipient'].split(';')[1].strip()
+ else:
+ return False
elif 'part_map' in part:
for subpart in part['part_map'].values():
result = self._extract_bounced_address(subpart)
@@ -399,6 +402,11 @@ class PixelatedMail(Mail):
return result
else:
continue
+ return False
+
+ def _bounce_permanent(self, part_headers):
+ status = part_headers.get('Status', '')
+ return status.startswith('5')
def as_dict(self):
dict_mail = {'header': {k.lower(): v for k, v in self.headers.items()},