接收邮件脚本
第一步:用poplib模块把邮件的原始文本下载到本地。
第二步:用email模块解析原始文本,还原为邮件对象。
1 import poplib 2 from email.parser import Parser 3 from email.header import decode_header 4 from email.utils import parseaddr 5 6 #邮件地址、口令、POP3服务器 7 email = "abc@qq.com" 8 passwd = "**********" 9 pop3_server = "mail.qq.com" 10 #连接到POP3服务器,如果开启SSL,就使用poplib.POP3_SSL 11 server = poplib.POP3_SSL(pop3_server) 12 #可以打开或关闭调试信息 13 server.set_debuglevel(1) 14 #打印POP3服务器的欢迎文字 15 print(server.getwelcome().decode("utf-8")) 16 #身份认证 17 server.user(email) 18 server.pass_(passwd) 19 #stat()返回邮件数量和占用空间 20 print("邮件数量:%s个。大小:%.2fMB" % (server.stat()[0],server.stat()[1]/1024/1024)) 21 #list()返回所有邮件的编号 22 resp,mails,octets, = server.list() 23 #获取最新一封邮件,注意索引号从1开始,最新的邮件索引即为邮件的个数 24 index = len(mails) 25 resp,lines,octets = server.retr(index) 26 #lines存储了邮件的原始文本的每一行可以获取整个邮件的原始文本 27 msg_content = b"\r\n".join(lines).decode("utf-8") 28 #稍后解析出邮件 29 msg = Parser().parsestr(msg_content) 30 31 def decode_str(s): 32 value,charset = decode_header(s)[0] 33 if charset: 34 value = value.decode(charset) 35 return value 36 print("解析获取到的邮件内容如下:\n--------------begin--------------") 37 #打印发件人信息 38 print(f"{decode_str(parseaddr(msg.get('From',''))[0])}<{decode_str(parseaddr(msg.get('From',''))[1])}>") 39 #打印收件人信息 40 print(f"{decode_str(parseaddr(msg.get('To',''))[0])}<{decode_str(parseaddr(msg.get('To',''))[1])}>") 41 #打印主题信息 42 print(decode_str(msg["Subject"])) 43 #打印第一条正文信息 44 part0 = msg.get_payload()[0] 45 content = part0.get_payload(decode=True) 46 print(content.decode(part0.get_content_charset())) 47 print("--------------end--------------") 48 #可以根据邮件索引号直接从服务器删除邮件 49 #server.dele(index) 50 #关闭连接 51 server.quit()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!