自动发邮件可以应用在很多场景。比如我想知道股票策略里面的股票池是不是实时更新的。这个时候如果我再去拉取数据,再去运行脚本就浪费时间了。为什么不把这套流程放在服务器上,然后自动运行,到点发邮件呢?类似的应用场景还有很多,不仅是股票策略提醒,比如定期给特定的人发邮件;网站宕机时,实时发送邮件提醒;当网站负载过高时,发送邮件提醒...等。下面我们来谈谈如何使用Python构建一个自动发送邮件的脚本。1、启用SMTP服务为了达到自动发送邮件的目的,我们需要在邮箱中启用SMTP服务:这个很重要,不要忘记启用SMTP,否则邮件无法发送成功。然后还需要点击下方生成一个授权码,这是使用Python发送邮件时的真实密码。邮箱设置成功后,就可以开始脚本开发了。2.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,可以访问这篇文章:超详细的Python安装指南进行安装。(可选1)如果使用Python进行数据分析,可以直接安装Anaconda:Anaconda,Python数据分析和挖掘的好帮手,内置Python和pip。(可选2)另外,推荐大家使用VSCode编辑器,它有很多优点:Python编程的最佳拍档——VSCode详解指南。请选择以下方式之一输入命令安装依赖项:1.Windows环境打开Cmd(开始-运行-CMD)。2.在MacOS环境下,打开Terminal(command+空格进入Terminal)。3、如果你使用的是VSCode编辑器或者Pycharm,可以直接使用界面下方的Terminal.pipinstallyagmail,看到Successfullyinstalledxxx,即表示安装成功。本文全部源码可在后台回复:自动发送邮件获取。3.编写脚本今天你需要的模块是yagmail,一个非常方便的Python邮件发送模块。有了这个模块,你甚至可以用一行命令发送邮件:yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的验证码',smtp_ssl=True)。send(["sendobject"],"subject","content")为了让这个发送邮件的方法更好用,我们把它封装成一个类:importtimeimportyagmailclassMail:"""邮件相关类"""defsendmail(self,msg,title,receivers):"""发送邮件参数:msg{str}--邮件正文标题{str}--邮件标题receivers{list}--邮件接收者数组"""yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的验证码',smtp_ssl=True)try:yag.send(receivers,title,msg)print("邮件发送成功")exceptBaseExceptionase:print(e)print("Error:Unabletosendmail")这个类还可以封装很多其他的东西,比如日志功能,用来显示时间:importtimeimportyagmailclassMail:"""邮件相关类"""deflog(self,content):now_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(f'{now_time}:{content}')这样,当需要显示时间时,只需要调用self.log即可。完整的优化代码如下:importtimeimportyagmailclassMail:"""邮件相关类"""deflog(self,content):now_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(f'{now_time}:{content}')defsendmail(self,msg,title,receivers):"""发送邮件参数:msg{str}--邮件文本标题{str}--邮件标题receivers{list}--邮件接收者,array"""yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的验证码',smtp_ssl=True)try:yag.send(receivers,title,msg)self.log("Mailsentsuccessful")exceptBaseExceptionase:print(e)self.log("Error:Unabletosendmail")发送成功时会显示??:#PSD:\CODE\stock\api>python.\sendmail_yagmail.py2021-06-2100:00:00:邮件发送成功4.小例子把刚才写的类保存为sendmail.py,然后可以试试小例子,我们用一个自动监控网站看看是否可以以down小脚本为例:importtimeimportrequestsfromsendmailimportMailwhileTrue:response=requests.get('https://pythondict.com')#判断网站是否正常according到状态码ifresponse.status_code!=200:Mail().sendmail('兄弟,pythondict宕机','Python实战宝典网站异常监控',['你的邮箱'])time.sleep(600)请求网站通过requests.get,使用response.status_code获取状态码,200正常,其他情况不正常。此检测每十分钟运行一次,因此time.sleep(600)。这样,我们就搭建了一个非常简单的网站异常监控脚本。如果你真的想在服务器上运行这个脚本,请记得使用nohup让它在后台运行:nohuppythontest.py&我们的文章到此结束,如果喜欢今天的Python实战教程,请继续关注我们!.
