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

python自动化操作邮件

一、安装需要的模块

pip install yagmail  #专门为gmail设计的邮件发送模块,可以极大简化邮件发送流程,其他邮箱也可以使用
pip install keyring  #安全密码管理,避免代码中硬编码密码等敏感信息
pip install schedule #任务调度
pip install mbox     #邮件处理

二、常用示例

1.存储和读取密码

import keyring
import yagmailyagmail.register('960193682@qq.com', 'password')  # 只要注册一遍,后面使用就不需要密码了,如果密码改了再次使用新密码注册即可
password = keyring.get_password("yagmail", "96019xxx@qq.com") #获取密码
print(password)

2.发送邮件

import yagmailyag = yagmail.SMTP(user='9601xxxx@qq.com', host='smtp.qq.com', port=465)  # 如果用户名已经注册过,密码就不需要填了,否则填入密码即可
# 除了文本,HTML也可以直接写,添加附件直接指定文件路径,当前目录可以不写前缀,如 test.png,如果附件需要展示在正文需要 可以使用inline参数指定
contents = ['文本内容', '<a href="https://www.baidu.com">百度搜索</a>', 'test.png', yagmail.inline('test.png')]
yag.send('xxxx@cheryholxxx.com', '测试邮件', contents) # 如果是群发,收件人使用列表格式

3.定时发送

#官方示例
import schedule
import timedef job():  # 把job换成我们发送邮件的函数即可print("I'm working...")schedule.every(10).minutes.do(job) # 每10分钟执行一次
schedule.every(5).to(10).minutes.do(job) # 每5~10分钟执行一次
schedule.every().hour.do(job)  #每小时执行一次
schedule.every().day.at("10:30").do(job) #每天 10:30 执行
schedule.every().monday.do(job) #每周一执行
schedule.every().wednesday.at("13:15").do(job) #每周三执行13:15
schedule.every().day.at("12:42", "Europe/Amsterdam").do(job)  #Europe/Amsterdam时区的每天12:42执行
schedule.every().minute.at(":17").do(job) #每分钟的第17秒执行while True:schedule.run_pending()time.sleep(1)参考文档:https://schedule.readthedocs.io/en/stable/

4.接收与查找邮件  

import keyring
from imbox import Imboxpassword = keyring.get_password("yagmail", "9601xxxx@qq.com")
print(password)with Imbox('imap.qq.com', '9601xxxx@qq.com', password, port=993,ssl=True) as imbox:all_inbox_messages = imbox.messages()  # 读取所有邮件for uid, message in all_inbox_messages:  # uid可以查找到邮件,后续可以做标记或者删除print(uid)print(message.subject) # 常用读取参数见下方print(message.body['plain'])#imbox.messages() 从服务端获取邮件时可以的参数
unread:  未读邮件
flagged: 红旗/标星邮件
unflagged:  非红旗/标星邮件
sent_from': 某发件人邮件
sent_to: 某收件人邮件
date__gt: 某时间之前的邮件  值格式为:datetime.data(2025,09,09)  年月日
date__lt: 某时间之后的邮件
date__on: 某天的邮件
subject: 邮件主体
uid__range': 邮件编号
text': 邮件内容#message.xxx  单个邮件读取时可用参数
发件人:message.sent_from
收件人:message.sent_to
主题:message.subject
时间:message.date
文本格式内容:message.body['plain']
HTML格式内容:message.body['html']
附件:message.attachments

  

  

  

http://www.hskmm.com/?act=detail&tid=17099

相关文章:

  • zabbix配置mysql监控
  • redis实现定期关单
  • 第18章 Day22 高阶混淆ast进阶
  • 关于ubuntu 用户切换的细节 su - user 和su user
  • 用 SeaTunnel 同步 MySQL 到 Doris:全量增量 + SQL 过滤
  • 在CodeBolcks下wxSmith的C++编程教程——使用自定义绘制和鼠标处理创建项目
  • trae 配置mysql_mcp
  • Apache NiFi 1.28.1 集群 + Kerberos 认证 + 多租户模式部署
  • 基于Java+SpringBoot+SSM,Flask福聚苑社区团购体系(源码+LW+调试文档+讲解等)/福聚苑社区/团购系统/社区团购/福聚苑/团购/社区/环境/福聚苑小区/在线团购/社区购物
  • 按需引入echarts
  • 软件构造的用户交互设计 4章
  • 自定义制作docker容器自动自愈容器镜像
  • 如何利用海外 NetNut 网络代理与 AICoding 实战获取 iPhone 17 新品用户评论数据?
  • 第一次编码器测试
  • 04-FreeRTOS的概述及编程规范
  • 10_ select/poll/epoll实现服务端的io多路复用
  • 模拟实战配置实验
  • 国标GB28181公网直播EasyGBS如何构建全域覆盖的应急管理与安全生产解决方案?
  • Serilog.AspNetCore与Serilog的区别
  • 基于MATLAB S函数实现多智能体间歇通信仿真
  • 我天,前端岗要消亡了吗?
  • 闲话
  • java8的集合新API - --
  • 基于MATLAB/Simulink的500kW三相光伏逆变器仿真
  • Docker Compose启动多个镜像实例
  • 卫星时间同步平台:助力分布式测控系统同步工作
  • mkfx 对磁盘设置标签
  • C# Avalonia 15- Animation- Easing
  • 安卓编译重点记录
  • kubelet源码阅读(二)——device plugin 的ListAndWatch过程