前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python解析邮件

python解析邮件

作者头像
灯珑LoGin
发布2022-10-31 09:43:32
6490
发布2022-10-31 09:43:32
举报
文章被收录于专栏:龙进的专栏

前面我们讲到的接收邮件中,接收到的邮件把它打印出来,会发现是一堆很复杂的东西,很难阅读。这就需要我们去解析它

这里以pop3作为接收邮件的协议,并对邮件进行解析。

代码语言:javascript
复制
import poplib
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr

user = 'xxx@xx.xx'
password = 'xxxxx'
pop_server = poplib.POP3_SSL('pop.xxx.xxx', 995)
print(pop_server.getwelcome().decode('utf-8'))
pop_server.user(user)
pop_server.pass_(password)
print('Server stat', pop_server.stat())
#获取所有邮件列表
resp, mails, octets = pop_server.list()
print(mails)
#获取最新的一封邮件(序号最大的)。邮件索引从1开始计数
index= len(mails)
resp, lines, octets = pop_server.retr(index)
msg_content = b'\r\n'.join(lines).decode('utf-8')
#解析出邮件
msg = Parser().parsestr(msg_content)
pop_server.quit()


def decode_email(s):
    if not s:
        return ''
    value, charset = decode_header(s)[0]
    if charset:
        value = value.decode(charset)
        return value

#打印邮件的发件人、收件人和主题
mail_from = msg.get('From', "")
hdr, mail_from_addr = parseaddr(mail_from)
mail_from_name = decode_email(hdr)
print('发件人', mail_from_name, mail_from_addr)

mail_to = msg.get('To', "")
hdr, mail_to_addr = parseaddr(mail_to)
mail_to_name = decode_email(hdr)
print('收件人', mail_to_name, mail_to_addr)

subject = decode_email(msg.get('Subject', ''))
print('主题:', subject)

#递归解析邮件
def decode_mime(msg):
    if msg.is_multipart():
        parts = msg.get_payload()
        for part in parts:
            print(decode_mime(part))
    else:
        content_type = msg.get_content_type()
        if content_type in ('text/plain', 'text/html'):
            content = msg.get_payload(decode=True)
            print(content.decode('utf-8'))
        else:
            print('Attachment', content_type)

decode_mime(msg)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月29日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档