def extract_headers_metadata(self, headers):
headers = [(stringify(k), stringify(v)) for k, v in headers]
self.result.headers = dict(headers)
for field, value in headers:
field = field.lower()
if field is None or value is None:
continue
if field == 'subject':
self.update('title', value)
if field == 'message-id':
self.update('id', value)
if field == 'date':
try:
date = rfc822.parsedate(value)
date = datetime.fromtimestamp(mktime(date))
self.update('created_at', date)
except Exception as ex:
log.warning("Failed to parse [%s]: %s", date, ex)
if field == 'from':
addr = address.parse(value)
if addr is not None:
author = stringify(addr.display_name)
email = stringify(addr.address)
self.result.emails.append(email)
if author is not None and author != email:
self.update('author', author)
self.result.entities.append(author)
if field in ['to', 'cc', 'bcc']:
for addr in address.parse_list(value):
name = stringify(addr.display_name)
email = stringify(addr.address)
self.result.emails.append(email)
if name is not None and name != email:
self.result.entities.append(name)
评论列表
文章目录