每天工作忙,学会python自动收发邮件,代替你问候女友

简介: Yet Another GMAIL/SMTP client;非常方便的SMTP包,超简单的Python发邮件模块;需要单独安装,不包含在Python标准模块里;yagmail官网链接

1

相关库介绍

1)yagmail
  • Yet Another GMAIL/SMTP client;
  • 非常方便的SMTP包,超简单的Python发邮件模块;
  • 需要单独安装,不包含在Python标准模块里;
  • yagmail官网链接
2)keyring
  • 从Python访问系统密钥环服务(即密码不用直接写在代码里);
  • 方便、安全地储存你的密码;
  • 需要单独安装,不包含在Python标准模块里;
  • keyring官网链接
3)schedule
  • 超容易理解的定时任务执行器;
  • 需要单独安装,不包含在Python标准模块里;
  • schedule官网链接
4)imbox
  • 简易的Python IMAP包;
  • 进行IMAP相关的操作;
  • 需要单独安装,不包含在Python标准模块里;
  • imbox官网链接
5)上述库安装
  1. pip install yagmail keyring schedule imbox


2

利用python发送邮件

1)邮件相关基础知识
  • POP3:Post Office Protocol3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。
  • SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议。
  • IMAP:Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。
  • 注意:写代码发邮件时一定要注意不能频繁发送!容易被当做垃圾邮件被屏蔽!!
2)python发送邮件流程(以“QQ邮箱”为例,进行说明)
① 注册一个QQ邮箱,开通POP3/SMTP/IMAP

点击设置--》账户--》开启如下服务

24.png


注意:开启过程中,需要发送短信验证,此时会出现一个第三方密码,这个第三方密码在使用第三方软件登陆的时候,用该密码代替你的扣扣登陆密码。

25.png

② 找到SMTP和IMAP服务器的地址

26.png

③ 发送邮件之前,先使用yagmail存储你的邮件地址和密码

27.png


注意:这两行代码,是用于存储你的邮件地址和密码,当你执行这行代码后。你后面发送邮件的时候,就只需要显示给出你账号即可,而不用再把密码显示出来。

④ 发送第一封测试邮件
import yagmail
# 这里的user填写的是你的扣扣邮箱账号,可以看出这里并没有写我们的“密码”
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")
contents = ["这是第一段正文内容","这是第二段正文内容"]
# 这里填写的是你要发送的人的扣扣邮箱
yag.send("××××××××××@qq.com","这是一封邮件",contents)
"""
特别备注一下:这里可以看到,我们发送邮件的时候,此时就没有显示给出密码了。
这样做相对来说较为安全,这就是yagmail库的好处。
"""

结果如下:

29.png


⑤ 发送带HTML样式的邮件
import yagmail
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")
contents = ['这是第一段正文内容',
            '这是第二段正文内容',
            '百度网站']
yag.send("××××××××××@qq.com","这是一封邮件",contents)

结果如下:

30.png

⑥ 发送带附件的邮件
import yagmail
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")
contents = ['这是第一段正文内容',
            '这是第二段正文内容',
            '百度网站',
            'G:\\6Tipdm\\7python办公自动化\\我创建的压缩包.zip']
yag.send("××××××××××@qq.com","这是一封邮件",contents)

结果如下:

31.png

⑦ 发送带嵌入图片的邮件
import yagmail
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")
contents = ['亲爱的××老婆',
            '我爱你',
            yagmail.inline('G:\\6Tipdm\\7python办公自动化\\老婆.png')]
yag.send("××××××××××@qq.com","这是一封邮件",contents)
⑧ 群发邮件
import yagmail
yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
contents = ['这是第一段正文内容',
            '这是第二段正文内容',
            '百度网站',
            'G:\\6Tipdm\\7python办公自动化\\我创建的压缩包.zip']
# 定义一个收件人列表
shoujian_ren = ["×1×@qq.com","×2×@qq.com","×3×@qq.com"]
yag.send(shoujian_ren,"这是一封邮件",contents)
⑨ 定时发送邮件

利用这个功能,你可以定时给你女朋友发送邮件,表达你的关心,以免自给由于工作忙,而忽略了自己的女朋友。

1. import time
2. import schedule
3. import yagmail
4. import datetime
5. 
6. def morning():
7.     content = ["亲爱的,记得吃早饭哦!"]
8.     yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
9.     yag.send("1127421544@qq.com","这是一封邮件",content)
10. def afternoon():
11.     content = ["亲爱的,记得吃中饭哦!"]
12.     yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
13.     yag.send("1127421544@qq.com","这是一封邮件",content)
14. def evering():
15.     content = ["亲爱的,记得吃晚饭哦!"]
16.     yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
17.     yag.send("1127421544@qq.com","这是一封邮件",content)
18. 
19. schedule.every().day.at("07:30").do(morning)
20. schedule.every().day.at("11:30").do(afternoon)
21. schedule.every().day.at("17:30").do(evering)
22. 
23. while True:
24.     # 当代码完成了这一天的任务以后,自动结束任务
25.     if datetime.datetime.now().strftime("%H:%M") == "17:31":
26.         break
27.     schedule.run_pending()
28.     time.sleep(1)
29. """
30. # 每十分钟,执行一次任务
31. schedule.every(10).minutes.do(job)
32. # 每小时,执行一次任务
33. schedule.every().hour.do(job)
34. # 每天上午十点半,执行一次任务
35. schedule.every().day.at("10:30").do(job)
36. # 每5-10钟,执行一次任务
37. schedule.every(5).to(10).minutes.do(job)
38. # 每周一,执行一次任务
39. schedule.every().monday.do(job)
40. # 每周三下午一点十五分,执行一次任务
41. schedule.every().wednesday.at("13:15").do(job)
42. # 每分钟的第十七秒,执行一次任务
43. schedule.every().minute.at(":17").do(job)
44. """



3

利用python读取邮件

32.png


代码如下:

from imbox import Imbox
import keyring
# "1127421544@qq.com"是你的邮箱账号
pwd = keyring.get_password("yagmail", "1127421544@qq.com")
# "imap.qq.com"是你的IMAP邮箱服务器地址
with Imbox("imap.qq.com","1127421544@qq.com",pwd,ssl=True) as imbox:
    all_inbox_messages = imbox.messages()
    for uid, message in all_inbox_messages:
        print(message.subject)
        print(message.body["plain"])

如何读取未读邮件,只需要添加一个参数:

33.png

如果只想看红旗标记的邮件,应该怎么办:

34.png

如果只想看来自某个人的邮件,应该怎么做:

35.png

如何按照日期筛选邮件:

36.png

设置标记已读和删除邮件:

37.png


目录
打赏
0
0
0
0
6
分享
相关文章
python编写问候小程序-学习笔记7
python编写问候小程序-学习笔记7
216 0
python编写问候小程序-学习笔记7
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
84 11
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
140 29
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
4月前
|
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
64 4
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化和调试技巧,涵盖使用内置函数、列表推导式、生成器、`cProfile`、`numpy`等优化手段,以及`print`、`assert`、`pdb`和`logging`等调试方法。通过实战项目如优化排序算法和日志记录的Web爬虫,帮助你编写高效稳定的Python程序。
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等