使用Python的email包来解析邮件、转码、解析附件和解析HTML以获取图片。如何使用email包来解析邮件、转码内容、解析附件和提取HTML中的图片链接:
import email
import base64
import quopri
from bs4 import BeautifulSoup
def decode_payload(payload, encoding):
if encoding == 'base64':
return base64.b64decode(payload)
elif encoding == 'quoted-printable':
return quopri.decodestring(payload).decode('utf-8')
else:
return payload
def parse_email_message(message):
msg = email.message_from_string(message)
for part in msg.walk():
if part.get_content_maintype() == 'multipart':
continue
content_type = part.get_content_type()
content_disposition = str(part.get('Content-Disposition'))
if 'attachment' in content_disposition:
filename = part.get_filename()
if filename:
with open(filename, 'wb') as f:
f.write(part.get_payload(decode=True))
else:
payload = part.get_payload()
encoding = part.get('Content-Transfer-Encoding')
decoded_payload = decode_payload(payload, encoding)
if content_type == 'text/html':
soup = BeautifulSoup(decoded_payload, 'html.parser')
images = soup.find_all('img')
for img in images:
print(img['src'])
with open('email.eml', 'r') as file:
email_message = file.read()
parse_email_message(email_message)