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 yagmail

yagmail.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邮箱收发邮件类似。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狐狸的帽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值