当前位置: 首页 > news >正文

python操作腾讯企业邮箱读取邮件内容

import imaplib
import email
from email.header import decode_header
import webbrowser
import os# 邮箱登录信息
username = "用户名"
password = "密码"# 腾讯企业邮箱的IMAP服务器地址和端口
imap_server = "imap.exmail.qq.com"
imap_port = 993# 连接到IMAP服务器
mail = imaplib.IMAP4_SSL(imap_server, imap_port)
mail.login(username, password)# 选择收件箱
mail.select("inbox")# 搜索所有邮件
status, messages = mail.search(None, "ALL")
mail_ids = messages[0].split()# 定位最新的一封邮件
latest_email_id = mail_ids[-1]# 获取该邮件的内容
status, msg_data = mail.fetch(latest_email_id, "(RFC822)")# print(status)
# print(msg_data)for response_part in msg_data:if isinstance(response_part, tuple):# 解析邮件msg = email.message_from_bytes(response_part[1])# 邮件发件人from_ = msg.get("From")print(f"发件人: {from_}")# 邮件主题subject, encoding = decode_header(msg.get("Subject"))[0]if isinstance(subject, bytes):# 如果主题是字节,则进行解码subject = subject.decode(encoding if encoding else "utf-8")print(f"主题: {subject}")# 如果邮件是多部分的if msg.is_multipart():for part in msg.walk():content_type = part.get_content_type()content_disposition = str(part.get("Content-Disposition"))if "attachment" not in content_disposition:try:# 获取邮件正文,并检测编码body = part.get_payload(decode=True)charset = part.get_content_charset()if charset:body = body.decode(charset, errors="ignore")else:body = body.decode("utf-8", errors="ignore")print(f"正文: {body}")except Exception as e:print(f"解码错误: {e}")else:# 非多部分邮件,直接读取正文try:body = msg.get_payload(decode=True)charset = msg.get_content_charset()if charset:body = body.decode(charset, errors="ignore")else:body = body.decode("utf-8", errors="ignore")print(f"正文: {body}")except Exception as e:print(f"解码错误: {e}")# 退出IMAP服务器
mail.logout()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 人工智能(AI)正在以前所未有的速度融入我们生活的方方面面
  • IntelliJ IDEA 中实现 Spring Boot 项目 的自动编译
  • 【PyTorch】使用容器(Containers)进行网络层管理(Module)
  • 峟思投入式水位计的安全操作指南
  • AD元器件库中参数的设计
  • Java Spring Boot 项目中的密码加密与验证开发案例手册
  • FPGA技术赋能云数据中心:提高性能与效率
  • 数据治理与数据管理的区别:深入剖析与理解
  • [Go]-抢购类业务方案
  • Qt QSerialPort数据发送和接收DataComm
  • 对浏览器事件循环机制的理解
  • Redis 篇-深入了解基于 Redis 实现消息队列(比较基于 List 实现消息队列、基于 PubSub 发布订阅模型之间的区别)
  • JDBC简介与应用:Java数据库连接的核心概念和技术
  • 【Redis】Redis 典型应用 - 缓存 (Cache) 原理与策略
  • BuripSuiteProfessional 抓取HTTPS配置
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Android单元测试 - 几个重要问题
  • Angular2开发踩坑系列-生产环境编译
  • const let
  • Laravel 中的一个后期静态绑定
  • Shadow DOM 内部构造及如何构建独立组件
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 创建一种深思熟虑的文化
  • 订阅Forge Viewer所有的事件
  • 给新手的新浪微博 SDK 集成教程【一】
  • 关于List、List?、ListObject的区别
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 实习面试笔记
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序01:wepy框架整合iview webapp UI
  • 阿里云服务器购买完整流程
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (0)Nginx 功能特性
  • (1) caustics\
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (done) 两个矩阵 “相似” 是什么意思?
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (ibm)Java 语言的 XPath API
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (四)Android布局类型(线性布局LinearLayout)
  • (已解决)什么是vue导航守卫
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)四层和七层负载均衡的区别
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • ... 是什么 ?... 有什么用处?