Python实现邮件发送,python自动发送邮箱

  Python实现邮件发送,python自动发送邮箱

  自动电子邮件发送可以应用于许多场景。下面是如何用Python构建一个自动发送邮件的脚本。有兴趣的朋友可以试试。

  00-1010 1.打开SMTP服务2。准备3。写剧本4。自动发送电子邮件可以应用于许多场景。比如我想知道股票策略里有没有股票池的实时更新。此时,提取数据并再次运行脚本是浪费时间。为什么不把这个过程放在服务器上,然后自动运行,在某个时候发送邮件呢?

  类似的应用场景还有很多,不仅在股票策略提醒上,比如定期给一些人发邮件;网站宕机时,实时发送邮件提醒;网站超载,发送电子邮件提醒.诸如此类。

  下面是如何用Python构建一个自动发送邮件的脚本。

  

目录

  为了自动发送邮件,我们需要在邮箱中打开SMTP服务:

  这才是重点。别忘了打开SMTP,否则邮件发送不成功。然后还需要点击下方生成授权码,这是使用Python发邮件时的真实密码。

  邮箱设置成功后,就可以开始脚本开发了。

  

1.开启SMTP服务

  在开始之前,您应该确保Python和pip已经成功安装在您的计算机上。如果没有,可以访问这篇文章:超详细的Python安装指南进行安装。

  (可选1),如果使用Python进行数据分析,可以直接安装Anaconda,它内置了Python和pip。

  (可选2):另外,我们推荐你使用VSCode编辑器,它有很多优点。

  请选择以下任一种方式输入命令安装依赖:

  1.在windows环境下打开Cmd(开始-运行-CMD)。

  2.在Mac OS环境下打开终端(进入终端(命令空间)。

  3.如果使用的是VSCode Editor或者Pycharm,可以直接使用界面底部的终端。

  pipinstallyagmail

  看到成功安装xxx说明安装成功。本文所有源代码均可后台回复:由自动发送邮件.获取

  

2.准备

  今天需要用到的模块是yagmail,一个非常方便的Python邮件发送模块。有了这个模块,你甚至可以用一行命令发送电子邮件:

  yag=yagmail。SMTP(

  Host=smtp.qq.com ,user=您的邮箱,

  Password=您的验证码,smtp_ssl=True

  ).发送([发送对象],主题,内容)

  为了使这种发送邮件的方法更有用,我们将其封装到一个类中:

  进口时间

  importyagmail

  classMail:

  邮件相关类

  defsendmail(自己、消息、标题、接收者):

  发送邮件

  参数:

  消息{str} -消息正文

  标题{str} -消息标题

  收件人{列表} -邮件收件人,数组

  yag=yagmail。SMTP(

  Host=smtp.qq.com ,user=您的邮箱,

  Password=您的验证码,smtp_ssl=True

  )

  尝试:

  yag.send(接收者、标题、消息)

  打印(“邮件发送成功”)

  exceptBaseExceptionase:

  打印(e)

            print("Error: 无法发送邮件")

  这个类里还可以封装很多其他东西,比如log函数,用于显示时间:

  

import time

  import yagmail

  class Mail:

      """

      邮件相关类

      """

      def log(self, content):

          now_time = time.strftime(

              "%Y-%m-%d %H:%M:%S", time.localtime()

          )

          print(f{now_time}: {content})

  这样,需要显示时间的时候只需要调用self.log即可,优化后的完整代码如下:

  

import time

  import yagmail

  class Mail:

      """

      邮件相关类

      """

      def log(self, content):

          now_time = time.strftime(

              "%Y-%m-%d %H:%M:%S", time.localtime()

          )

          print(f{now_time}: {content})

      def sendmail(self, msg, title, receivers):

          """

          发送邮件

          Arguments:

              msg {str} -- 邮件正文

              title {str} -- 邮件标题

              receivers {list} -- 邮件接收者,数组

          """

          yag = yagmail.SMTP(

              host=smtp.qq.com, user=你的邮箱,

              password=你的鉴权码, smtp_ssl=True

          )

          try:

              yag.send(receivers, title, msg)

              self.log("邮件发送成功")

          except BaseException as e:

              print (e)

              self.log("Error: 无法发送邮件")

  发送成功时显示:

  

# PS D:\CODE\stock\api> python .\sendmail_yagmail.py

  2021-06-21 00:00:00: 邮件发送成功

  

  

4.小例子

  将刚刚编写完的类保存为sendmail.py,接下来就可以尝试一个小例子。我们用一个自动监控网站是否宕机的小脚本做示例:

  

import time

  import requests

  from sendmail import Mail

  while True:

      response = requests.get(https://pythondict.com)

      # 根据状态码判断网站是否正常

      if response.status_code != 200:

          Mail().sendmail(

              哥, pythondict挂了, Python实用宝典网站异常监控, [你的邮箱]

          )

      time.sleep(600)

  通过requests.get请求网站,使用response.status_code得到状态码,200 为正常,其他情况均为异常。这个检测每十分钟运行一次,因此time.sleep(600).

  就这样,我们构建起了一个非常简单的网站异常监控脚本,如果你真的要在服务器上运行这个脚本,请记得使用nohup让其在后台运行:

  

nohup python test.py &

  到此这篇关于Python实战之自动发送邮件的实现的文章就介绍到这了,更多相关Python自动发送邮件内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: