Python自动化之邮件的定时发送,我们这里使用网易163邮箱。
Python邮件操作相关模块的安装
yagmail,The goal here is to make it as simple and painless as possible to send emails./kootenpv/yagmail,作者希望让发邮件变得更加简单方便。
schedule是一个轻量级的定时任务调度的模块,可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
库的安装
pip install yagmail schedule
多个模块的安装只需要将模块名字放在依次放在install后面就好。
1. 邮箱的SMTP服务的开启
首先你得有一个163邮箱,当然其他邮箱也是可以的。在设置打开POP3/SMTP,IMAP/SMTP,需要邮箱绑定的手机号发送一条短信,你会得到一个授权码。这个授权码只显示一次,复制下来保存到授权码.txt文件中。
点击开启,会提示发送短信验证,下面是开启之后的状态。
2. 发送邮件
withopen('授权码.txt','r')asf: pwd=f.read() yag=yagmail.SMTP(user='发件人邮箱@',password=pwd,host='') mail_to='收件人邮箱@' contents=[ '第一部分内容', '第二部分内容', ] subject='这是一个正式的通知' attachments=[r'mydata.zip'] yag.send(mail_to,subject,contents,attachments) yag.close()importyagmail
给多个人发送邮件只需要将收件人都保存在一个列表中就可以。["收件人1邮箱","收件人2邮箱"],实现批量发送。
yagmail.SMTP连接邮箱的时候需要带上授权码,我们可以先注册授权码(只需要一次),后续的连接邮箱就可以不需要带上授权码。
#pwd=f.read() #yagmail.register('langkun1994@',pwd)#只需要运行一次,之后就可以注释掉 yag=yagmail.SMTP(user='发件人邮箱@',host='')#withopen('授权码.txt','r')asf:
3. 定时发送邮件
使用schedule定时任务实现定时发送邮件,将上面的发送邮件代码封装到一个函数中,schedule实现定时发送邮件。
importschedule importyagmail defsend_mail(): withopen('授权码.txt','r')asf: pwd=f.read() yag=yagmail.SMTP(user='发件人邮箱@',password=pwd,host='') contents=[ '第一部分内容', '第二部分内容', ] attachments=[r'mydata.zip'] yag.send('收件人邮箱@','这是一个正式的通知',contents,attachments) yag.close() schedule.every(10).minutes.do(send_mail)#每十分钟 schedule.every().hour.do(send_mail)#每小时 schedule.every().day.at('10:30').do(send_mail)#每天的10:30 schedule.every(5).to(10).minutes.do(send_mail)#5-10分钟 schedule.every().monday.do(send_mail)#每周一 schedule.every().wednesday.at('10:30').do(send_mail)#每周三10:30 schedule.every().minute.at(':20').do(send_mail)#每分钟的20秒 whileTrue: schedule.run_pending() time.sleep(1)importtime
希望可以有帮助,python自动化可以提高办公的效率,节省很多的重复性工作的时间。