Python办公自动化之收发邮件--163和qq邮箱
利用Python发送接收邮件
1.邮件相关概念
POP3:Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。
SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议。
IMAP:Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。
tips:注意!!写代码发邮件时一定要注意不能频繁发送!容易被当做垃圾邮件被屏蔽!!
2.操作步骤–163邮箱为例
1)注册一个邮箱,开通POP3/SMTP/IMAP
设置第三方邮件客户端专用密码–授权码
注意找到各服务器域名
SMTP服务器:smtp.163.com
IMAP服务器:imap.163.com
2)保存密码
打开Python交互式解释器,存入你的邮件地址和密码,这个密码是授权码。
import yagmailyagmail.register('bonnie@163.com', password)
3)发送邮件
2.3.1 发送第一封邮件
yagmail.SMTP(user=用户名, host='smtp.163.com')
2.3.2发送带HTML样式的邮件
contents=[‘para1 content’,’para2 content’, ’<a href=’https://baidu.com’>百度网站</a>’]1.png
2.3.3 发送带附件的邮件
contents=[‘para1 content’,’para2 content’, ’<a href=’https://baidu..com’>百度网站</a>’,'2.png’]
2.3.4 发送嵌入图片的邮件
contents=[‘para1 content’,’para2 content’, yagmail.inline(’flower.png’)]
2.3.5 群发邮件
yag.send([‘bonnie@163.com’,’ammy12@163.com’],’this is an e-mail from big boss’, contents)
2.3.6 定时任务
定义任务函数:
def job():print('打工人在努力!')
schedule.every(10).minutes.do(job)while True:schedule.run_pending()time.sleep(2)
如:schedule.every().wednesday.at(’13:15’).do(job) 为每周的周三下午1点1刻执行打印“我在干活呢”任务指令。
4)读取邮件
2.4.1读取密码
从keyring中读取密码
password=keyring.get_password(‘yagmail’,’bonnie@163.com’)
对于163、126邮箱,需要提前配置一下
输入网址:http://config.mail.163.com/settings/imap/index.jsp?uid=bonnie@163.com
允许第三方客户端读取内容。
如配置完,从keyring中读取密码为None,建议更换qq邮箱收发邮件方式。
2.4.2读取所有邮件
Imbox(IMAP服务器地址, 邮箱地址, 密码, 是否开启SSL加密)
with Imbox('imap.163.com','bonnie@163.com',password) as imbox:all_inbox_messages = imbox.messages(unread = True)for uid,message in all_inbox_messages:print(message)
2.4.3 message的属性
message的属性有:
message.sent_from 发件人
message.sent_to 收件人
message.subject 主题
message.date 时间
message.body[‘plain’] 文本格式内容
message.body[‘html’] HTML格式内容
message.attachments 附件
2.4.4 查看不同类型的邮件
未读邮件:unread_inbox_messages = imbox.messages(unread=True)
红旗邮件:inbox_flageged_messages = imbox.messages(flagged=True)
某发件人邮件:inbox_messages_from = imbox.messages(sent_from=邮件地址)
某收件人邮件: inbox_messages_from = imbox.messages(sent_to=邮件地址)
2.4.5 按日期筛选邮件
date__lt 某天前
date__gt 某天后
date__on 指定某一天
message_before=imbox.messages(date_lt=datetime.date(2020,10,8))
message_after=imbox.messages(date_gt=datetime.date(2020,10,8))
messaage_on_date=imbox.message(date_on=datetime.date(2020,10,6))
3.操作步骤–以QQ邮箱为例
1)开通POP3/SMTP/IMAP服务
进入mail.qq.com,点击【设置】-【账户】-【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】,开启【POP3/SMTP服务】和【IMAP/SMTP服务】。
出现短信验证,发送短信,点击【我已发送】。
收到【授权码】,这个授权码将成为在本地python收发邮件的password,不是你的邮件登录密码噢!
2)发送邮件
1.设置授权码为密码,以下2种方式2选1即可。
yagmail.register('1808909711@qq.com','oyirsulvcbnueeie')#keyring.set_password('yagamil','1808909711@qq.com','oyirsulvcbnueeie')
2.写明发件人邮箱,SMTP服务器域名,qq邮箱的SMTP服务器域名为 smtp.qq.com。
yag=yagmail.SMTP(user='1808909711@qq.com',host='smtp.qq.com')
3.编辑内容。
contents=[‘周末好’,‘天天开心’]
4.写明收件人邮箱,标题和内容,完成发送。
yag.send('1808909711@qq.com','this e-mail is for you',contents)
3)接收邮件
1.确认密码
password=keyring.get_password('yagamil','1808909711@qq.com')print(password)
2.写明IMAP服务器地址–imap.qq.com,目标邮箱地址,授权码。
对所有未读邮件的所有参数进行读取。
with Imbox('imap.qq.com','1808909711@qq.com',password) as imbox:all_inbox_messages = imbox.messages(unread = True)for uid,message in all_inbox_messages:print(message)print("------------------")
其他与上述163邮箱收发邮件类似。
Python办公自动化之收发邮件--163和qq邮箱相关推荐
- node-red教程 8.2 node-red收发邮件(基于QQ邮箱)
#8.2 node-red收发邮件-基于QQ邮箱 在一台联网的设备上,node-red可以使用邮箱控件来收发邮件.网上有很多教程都是基于外国的邮箱,这里介绍一个基于QQ邮箱的案例. ##8.2.1 邮 ...
- Python实战技巧(11)使用python收发邮件时需要的邮箱授权码如何获取
Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...
- 163、QQ邮箱收不到Github的邮件解决方法
163.QQ邮箱收不到Github的邮件解决方法 20230505171221||300
- Java使用163和QQ邮箱发邮件
"细雨梦回鸡塞远,小楼吹彻玉笙寒" 序 现在做的项目有做到流程审批,到下一节点时,会给节点的负责人发送邮件通知.流程都是手写的代码,没有用到流程引擎. 正文 其实通过QQ邮箱或者1 ...
- linux 发送邮件到163或者QQ邮箱
linux 发送邮件到163或者QQ邮箱 我想,在开始发送邮件前有些概念需要理解, ...
- qq邮箱收信服务器imap,普通IMAP、POP邮箱的设置 教你使用iPhone邮件客户端管理QQ邮箱...
延伸:教你使用iPhone邮件客户端管理QQ邮箱 描述:...电脑,我们可以使用它来收发邮件,本教程为大家介绍如何iPhone/iPod touch上的邮件客户端收取QQ邮箱的邮件,这里以ipod t ...
- Spring Boot 整合163或者qq邮箱发送验证码
前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...
- springboot(07)邮件发送(qq邮箱)
可以使用Spring Boot提供的spring-boot-starter-mail模块来发送QQ邮件 首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设 ...
- win10邮件中添加QQ邮箱无法成功
win10邮件中添加QQ邮箱无法成功 1.登录QQ邮箱在设置->账户将IMAP由关闭改为开启 2.如果还是无法成功,点击生成授权码 3.出现如下界面后,使用手机发送短信,待发送成功后,点击我已发 ...
最新文章
- 一、ExtMail Solution概述--EXTMAIL
- 如何将Android的AOSP仓库放置到自己的gitlab服务器上?
- CV之路 —— Opencv学习
- reactjs定义组件:函数式组件
- 请求nginx静态资源报403
- Spark中如何管理Spark Streaming消费Kafka的偏移量
- mysql数字辅助表_关于数字的经典SQL编程问题:数字辅助表
- Unity 手机的旋转控制
- Selenium2(WebDriver)总结(一)---启动浏览器、设置profile加载插件
- django–url
- 吴恩达机器学习课程资源(笔记、中英文字幕视频、课后作业,提供百度云镜像!)
- 共享智能榨汁机器人_新橙派果汁机器人-让智能现榨果汁触手可及
- 渗透工具-masscan
- 在Word2019中不能插入公式的解决办法
- 学习笔记 Tianmao 篇 recyclerView 辅助的RecycleAdapterImpl类(适配Sliderview)
- winrar是不是计算机应用软件,请注意winrar不是一个免费软件。在40天的试用期结束后,你必须购买一个许可,或者将他从你的计算机中删除...
- tree是不是动词_动名词到底是动词还是名词?
- 电脑上如何快速将图片压缩变小?
- PAT-2021年春季乙级考试题解
- mysql error 1236_MySQL Error 1236 错误解决办法
热门文章
- 汶川地震死亡人数5月26日消息
- Android中设置定时闹钟以及AlarmManager详解
- ATPG之STIL格式说明
- 2021/8/13 又回到最初的起点
- mysql match against_mysql全文模糊搜索MATCH AGAINST方法
- 163个人电子邮箱免费注册,外贸邮箱用哪个比较好?
- Ubuntu 14.04~14.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
- Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法
- 常见html的标签含义(2)
- NBoot EBoot