学会python自动收发邮件 代替你问候女友


Posted in Python onMay 20, 2020

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

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)上述库安装

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

具体可参考:python实现QQ邮箱/163邮箱的邮件发送

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

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

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

 ④ 发送第一封测试邮件

import yagmail
# 这里的user填写的是你的扣扣邮箱账号,可以看出这里并没有写我们的“密码”
yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

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

结果如下:

学会python自动收发邮件 代替你问候女友

⑤ 发送带HTML样式的邮件

import yagmail

yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ['这是第一段正文内容',
 '这是第二段正文内容',
 '百度网站']

yag.send("××××××××××@qq.com","这是一封邮件",contents)

结果如下:

学会python自动收发邮件 代替你问候女友

⑥ 发送带附件的邮件

import yagmail

yag = yagmail.SMTP(user="××××××××××@qq.com",host="smtp.qq.com")

contents = ['这是第一段正文内容',
 '这是第二段正文内容',
 '百度网站',
 'G:\\6Tipdm\\7python办公自动化\\我创建的压缩包.zip']

yag.send("××××××××××@qq.com","这是一封邮件",contents)

结果如下:

学会python自动收发邮件 代替你问候女友

⑦ 发送带嵌入图片的邮件

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)

⑨ 定时发送邮件

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

import time
import schedule
import yagmail
import datetime

def morning():
 content = ["亲爱的,记得吃早饭哦!"]
 yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
 yag.send("1127421544@qq.com","这是一封邮件",content)
def afternoon():
 content = ["亲爱的,记得吃中饭哦!"]
 yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
 yag.send("1127421544@qq.com","这是一封邮件",content)
def evering():
 content = ["亲爱的,记得吃晚饭哦!"]
 yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com")
 yag.send("1127421544@qq.com","这是一封邮件",content)

schedule.every().day.at("07:30").do(morning)
schedule.every().day.at("11:30").do(afternoon)
schedule.every().day.at("17:30").do(evering)

while True:
 # 当代码完成了这一天的任务以后,自动结束任务
 if datetime.datetime.now().strftime("%H:%M") == "17:31":
 break
 schedule.run_pending()
 time.sleep(1)
"""
# 每十分钟,执行一次任务
schedule.every(10).minutes.do(job)
# 每小时,执行一次任务
schedule.every().hour.do(job)
# 每天上午十点半,执行一次任务
schedule.every().day.at("10:30").do(job)
# 每5-10钟,执行一次任务
schedule.every(5).to(10).minutes.do(job)
# 每周一,执行一次任务
schedule.every().monday.do(job)
# 每周三下午一点十五分,执行一次任务
schedule.every().wednesday.at("13:15").do(job)
# 每分钟的第十七秒,执行一次任务
schedule.every().minute.at(":17").do(job)
"""

3、利用python读取邮件

学会python自动收发邮件 代替你问候女友

代码如下:

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"])

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

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

如何按照日期筛选邮件:

学会python自动收发邮件 代替你问候女友

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

学会python自动收发邮件 代替你问候女友

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
理解python正则表达式
Jan 15 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
Python建立Map写Excel表实例解析
Jan 17 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
python线程join方法原理解析
Feb 11 Python
Pycharm修改python路径过程图解
May 22 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
举例讲解Python装饰器
Dec 24 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 Python
Django中ORM找出内容不为空的数据实例
May 20 #Python
django为Form生成的label标签添加class方式
May 20 #Python
django orm模块中的 is_delete用法
May 20 #Python
Python3批量创建Crowd用户并分配组
May 20 #Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 #Python
django中related_name的用法说明
May 20 #Python
在django中form的label和verbose name的区别说明
May 20 #Python
You might like
聊天室php&mysql(二)
2006/10/09 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
常用js脚本
2006/12/03 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python常用小技巧总结
2015/06/01 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
态度决定一切演讲稿
2014/05/20 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
撤诉书怎么写
2015/05/19 职场文书
圣诞晚会主持词
2015/07/01 职场文书
资产移交协议书
2016/03/24 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
js前端图片加载异常兜底方案
2022/06/21 Javascript