Python获取邮件

使用python获取邮件主题

import poplib, traceback
from email.parser import Parser
from email.header import decode_header


# 邮件检测
def check(email_address, email_password, pop3_server, email_subject):
    '''
    :param email_address: 邮箱地址
    :param email_password: 邮箱密码
    :param pop3_server: 邮箱服务器
    :param sub_email: 邮件主题
    :return: sub_email 在指定 email_address 中, 则返回True, 否则返回False
    '''

    # 定义需要查找的主题 和 邮箱中的主题列表
    sub = email_subject
    result_list = []

    # 连接并获取邮件内容
    server = poplib.POP3(pop3_server)
    server.set_debuglevel(1)
    server.user(email_address)
    server.pass_(email_password)
    resp, mails, octets = server.list()

    # 获取每封邮件的主题
    index = len(mails)
    for i in range(1, index):
        try:
            resp, lines, octets = server.retr(i)
            # 编码格式列表
            encode_list = ['utf-8', 'gbk', 'GB2312', 'GB18030']
            for en in encode_list:
                print(en)
                try:
                    msg_content = b'\r\n'.join(lines).decode(en)
                    break
                except:
                    print('更换编码方式重试')
            messageObject = Parser().parsestr(msg_content)
            msgSubject = messageObject["Subject"]
            dh = decode_header(msgSubject)
            print(dh)
            if dh[0][1]:
                result = dh[0][0].decode(dh[0][1])
                result_list.append(result)
            else:
                result = dh[0][0]
                result_list.append(result)
        except:
            print(traceback.print_exc())

    # 检测所有的邮件主题
    print(result_list)
    if sub in result_list:
        res = True
    else:
        res = False

    return res

Note:

1- 获取内容:
		1- 获取服务器中的邮件
			resp, mails, octets = server.list()
		2- 获取指定 num 封邮件
			resp, lines, octets = server.retr(num)
		3- lines中包含邮件中的大部分信息,包括:[From, To, Subject, Data]
			messageObject = Parser().parsestr(msg_content)
            msgSubject = messageObject["Subject"]
        4- 将获取到的数据进行解码
        	dh = decode_header(msgSubject)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值