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

Python自动发邮件教程大家都能看懂

时间:2023-03-26 19:09:51 Python

自动发邮件可以应用到很多场景。比如我想知道股票策略里面的股票池是不是实时更新的。这个时候如果我再去拉取数据,运行再写脚本就浪费时间了。为什么不把这套流程放在服务器上,然后自动运行,到点发邮件呢?类似的应用场景还有很多,不仅是股票策略提醒,比如定期给特定的人发邮件;网站宕机时,实时发送邮件提醒;当网站负载过高时,发送邮件提醒...等。下面我们来谈谈如何使用Python构建一个自动发送邮件的脚本。1、启用SMTP服务为了达到自动发送邮件的目的,我们需要在邮箱中启用SMTP服务:这个很重要,不要忘记启用SMTP,否则邮件无法发送成功。然后还需要点击下方生成一个授权码,这是使用Python发送邮件时的真实密码。邮箱设置成功后,就可以开始脚本开发了。2.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。(方案一)如果使用Python进行数据分析,可以直接安装Anaconda,Anaconda内置了Python和pip。(方案二)另外,推荐大家使用VSCode编辑器,优点很多。请选择以下方式之一输入命令安装依赖项:Windows环境打开Cmd(开始-运行-CMD)。MacOS环境打开Terminal(command+空格进入Terminal)。如果您使用的是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):"""发送邮件参数:msgstr}texttitle{str}--电子邮件标题receivers{list}--电子邮件接收者,数组"""yag=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='传递你的权限码',smtp_ssl=true)Try:yag.send(Receivers,Title,MSG)print("MailSendSuccess")除了Baseexceptionase:Print(E)PRINT("ERROR:Can'tSendMail"))这个类还可以封装很多其他的东西,比如日志功能,用来显示时间:importtimeimportyagmailclass邮件:“""邮件相关类"""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}-邮件文本title{str}--emailtitleReceivers{list}=yagmail.SMTP(host='smtp.qq.com',user='你的邮箱',password='你的验证码',smtp_ssl=True)try:yag.send(receivers,title,msg).log("邮件发送成功")exceptBaseExceptionase:print(e)self.log("Error:Failedtosendmail")发送成功时会显示??:#PSD:\CODE\stock\api>python.\sendmail_yagmail.py2021-06-2100:00:00:邮件发送成功4.小例子把刚才写的类保存为sendmail.py,然后就可以试试小例子了。下面以一个自动监测网站是否宕机的小脚本为例:状态码ifresponse.status_code!=200:Mail().sendmail('兄弟,pythondictdown','Python实用宝典网站异常监控',['你的邮箱'])time.sleep(600)请求网站通过requests.get,使用response.status_code获取状态码,200为正常,其他情况为异常。此检测每十分钟运行一次,因此time.sleep(600)。这样,我们就搭建了一个非常简单的网站异常监控脚本。如果你真的想在服务器上运行这个脚本,请记得使用nohup让它在后台运行:nohuppythontest.py&以上就是本次分享的全部内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。