当前位置: 首页 > 后端技术 > Python

Python自动发邮件详细教程

时间:2023-03-25 23:54:54 Python

自动发邮件可以应用在很多场景。比如我想知道股票策略里面的股票池是不是实时更新的。这个时候我再去拉取数据,再跑脚本,真的是太浪费时间了。为什么不把这套流程放在服务器上,然后自动运行,到点发邮件呢?类似的应用场景还有很多,不仅是股票策略提醒,比如定期给特定的人发邮件;例如,当网站宕机时,实时发送邮件提醒;例如,当网站负载过高时,发送电子邮件提醒……等。让我们谈谈如何使用Python构建一个自动发送电子邮件的脚本。1、启用SMTP服务为了达到自动发送邮件的目的,我们需要在邮箱中启用SMTP服务:这个很重要,不要忘记启用SMTP,否则邮件将无法发送成功。然后还需要点击下方生成一个授权码,这是使用Python发送邮件时的真实密码。邮箱设置成功后,就可以开始脚本开发了。2.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,请访问这篇文章:超详细的Python安装指南进行安装。如果使用Python进行数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手-AnacondaWindows环境打开Cmd(开始-运行-CMD),苹果系统环境请打开Terminal(命令+空格输入Terminal),准备开始输入命令来安装依赖。当然,我更推荐你使用VSCode编辑器,将本文代码复制,在编辑器下方的终端中运行命令安装依赖模块。多么惬意的一件事:Python编程的最佳搭档——VSCode详解指南。在终端输入如下命令安装我们需要的依赖模块:pipinstallyagmail如果看到Successfullyinstalledxxx,则安装成功。本文全部源码可在公众号后台回复:自动发送邮件获取。3.编写脚本今天你需要的模块是yagmail,一个非常方便的Python邮件发送模块。有了这个模块,你甚至可以用一行命令发送邮件:yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的授权码',smtp_ssl=True)。send('sendobject','subject','content')为了让这个发送邮件的方法更好用,我们将它封装成一个类:importyagmailclassMail:"""邮件相关类"""defsendmail(self,msg,title,receivers):"""发送邮件参数:leittmsg{str}str}--邮件标题receivers{list}--邮件接收者,数组"""yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的验证码',smtp\_ssl=true)Try:yag.send(Receivers,Title,MSG)print("MailSendingSuccessful")除了BaseexceptionAsE:Print(E)PRINT("Error:Can'tSendEmail")this)类还可以封装很多其他的东西,比如日志功能,用来显示时间:importtimeclassMail:"""邮件相关类"""deflog(self,content):now\_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(f'{now\_time}:{content}')这样,当需要显示时间的时候,只需要调用self.log,就可以将sendmail函数改成如下:defsendmail(self,msg,title,receivers):"""发送邮件参数:msg{str}--邮件正文标题{str}--邮件标题接收者{list}--邮件接收者,数组"""yag=yagmail.SMTP(host='smtp.qq.com',user='youremail',password='yourauthenticationcode',smtp_ssl=True)try:yag.send(receivers,title,msg)self.log("Theemailwassentsuccessful")除了BaseException为e:print(e)self.log("Error:Failedtosendemail")发送成功会显示:PSD:\\CODE\\stock\\api>python.\\sendmail\_yagmail.py2020-04-2200:51:34:邮件发送成功4.小例子把刚才写的类保存为sendmail.py,然后可以试试小例子下面以一个自动监测网站是否宕机的小脚本为例:响应时的状态代码。status_code!=200:Mail().sendmail('兄弟,pythondict宕机了','Python实战宝典网站异常监控',['你的邮箱'])time.sleep(600)通过requests.get请求网站,使用response.status_code可以获取状态码,200为正常,其他情况为异常。此检测每十分钟运行一次,因此time.sleep(600)。这样,我们就搭建了一个非常简单的网站异常监控脚本。如果你真的想在服务器上运行这个脚本,请记得使用nohup让它在后台运行。总之,邮件自动发送的用途非常广泛,不亚于手机的自动通知,具体使用还是要看自己的需要了。自动通知系列:让Python自动提醒你:阿森纳进球了!Python自动发邮件详细教程我们的文章到此结束。想要我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。您可以在下方留言区留言,我们会耐心解答!Python实战宝典不只是收藏欢迎来到公众号:Python实战宝典原文来自Python实战宝典:Python自动发送邮件详解教程