python读取并解析邮箱邮件,读取邮件主题、内容、时间
要在Python中读取和解析邮箱邮件,你可以使用imaplib
库来连接到IMAP服务器,并使用email
模块来处理邮件内容。以下是一个简单的例子,展示了如何连接到邮箱、获取邮件、解析邮件的主题、内容和时间。
import email
import imaplib
from email.header import decode_header
from email.utils import parseaddr
import datetime
def decode_str(s):
value, charset = email.header.decode_header(s)[0]
if charset:
value = value.decode(charset)
return value
def get_emails(username, password, host='imap.gmail.com', port=993):
# 连接到IMAP服务器
server = imaplib.IMAP4_SSL(host, port)
server.login(username, password)
server.select('inbox') # 选择收件箱
# 获取邮件列表
status, messages = server.search(None, 'ALL')
ids = messages[0].split()
# 获取邮件信息
for email_id in ids:
# 获取邮件数据
status, email_data = server.fetch(email_id, '(RFC822)')
if status == 'OK':
email_msg = email.message_from_bytes(email_data[0][1])
# 解析邮件的主题和时间
subject = decode_str(email_msg.get('Subject'))
date = email_msg.get('Date')
if date:
date = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z')
# 解析邮件正文
for part in email_msg.walk():
content_type = part.get_content_type()
if content_type == 'text/plain' or content_type == 'text/html':
content = part.get_payload(decode=True)
charset = guess_charset(part)
if charset:
content = content.decode(charset)
yield {
'subject': subject,
'content': content,
'date': date
}
# 获取邮件的字符集
def guess_charset(msg):
charset = msg.get_charset()
if charset is None:
content_type = msg.get('Content-Type', '').lower()
pos = content_type.find('charset=')
if pos >= 0:
charset = content_type[pos + 8:].strip()
return charset
# 使用示例
username = 'your_email@example.com'
password = 'your_password'
for email in get_emails(username, password):
print(email['subject'])
print(emai
评论已关闭