自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢?

类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件;还比如网站宕机了,实时发送邮件提醒;又比如网站负载过高,发送邮件提醒…等等。

下面就来讲讲怎么用Python构建一个自动发送邮件的脚本。

1.开启SMTP服务

为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务:

这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。

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

2.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。

在终端输入以下命令安装我们所需要的依赖模块:

pip install yagmail

看到 Successfully installed xxx 则说明安装成功。本文全部源代码可在公众号后台回复:自动发送邮件 获得。

3.编写脚本

今天需要用到的模块是yagmail,一个非常方便的Python邮件发送模块,用这个模块,你甚至能一行命令发送邮件:

yag = yagmail.SMTP(host='smtp.qq.com', user='你的邮箱',password='你的授权码', smtp_ssl=True
).send('发送对象', '主题', '内容')

为了让这个发送邮件的方法更加具备可用性,我们将其封装到一个类中:

import yagmail
class Mail:"""邮件相关类""" 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)print("邮件发送成功")except BaseException as e:print (e)print("Error: 无法发送邮件")

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

import time
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即可,可将sendmail函数改成如下所示:

    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
2020-04-22 00:51:34: 邮件发送成功

4.小例子

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

import time
import requests
from sendmail import Mailwhile 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让其在后台运行。

总之,自动发送邮件的用途非常广泛,不亚于手机自动通知,具体使用就要看各位自身的需求啦。

自动通知系列文章:

让Python自动提醒你:阿森纳进球啦!

Python 自动发送邮件详细教程

我们的文章到此就结束啦,如果你希望我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!


Python实用宝典
不只是一个宝典
欢迎关注公众号:Python实用宝典

原文来自Python实用宝典:Python 自动发送邮件详细教程

Python 自动发送邮件详细教程相关推荐

  1. Linux下利用python实现语音识别详细教程

    Linux下python实现语音识别详细教程 语音识别工作原理简介 选择合适的python语音识别包 安装SpeechRecognition 识别器类 音频文件的使用 英文的语音识别 噪音对语音识别的 ...

  2. python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...

  3. python自动发送邮件_Python自动发送邮件

    用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...

  4. 关闭 Pycharm 自动更新详细教程

    关闭 Pycharm 自动更新详细教程 一.小啊呜有话说 二.关闭 Pycharm 自动更新步骤 三.写在后面的话 叮嘟!这里是小啊呜的学习课程资料整理.好记性不如烂笔头,今天也是努力进步的一天.一起 ...

  5. csdn最牛最全的使用python自动发送邮件

    使用python自动发送邮件 1.Python 自带的发送邮件功能 在生成报告后我们希望框架能自动把报告发送到我们的邮箱中.和outlook,foxmail等邮件客户端一样,Python中发送邮件需要 ...

  6. python自动发送邮件

    python自动发送邮件 1.导入yagmail pip install yagmail #如果上面方式报错,建议使用阿里云镜像进行添加 pip install yagmail -i https:// ...

  7. python通过代理发送邮件_Python实现SMTP发送邮件详细教程

    简介 Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详细的 ...

  8. python自动发送邮件脚本

    目录 需要开通smtp功能 脚本 需要开通smtp功能 这里举例子使用的163的邮箱,每个邮箱都是一样的,发件邮箱设置即可 163网易免费邮-你的专业电子邮局 脚本 # -*- coding:utf- ...

  9. 高效办公,如何利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

最新文章

  1. RocketMQ-- 一对多 (消费者与生产者)
  2. 硬盘的转速是什么意思,有什么功能?
  3. redis常用命令(高级篇)
  4. RS485 RS232
  5. Codeforces Round #468 (Div. 2): C. Laboratory Work(贪心)
  6. hp 服务器可以安装win7系统安装失败,如何解决win7hp1213打印机安装失败的问题
  7. 苹果助手一键安装_再见!国内经典的iOS越狱助手,正式宣布下线
  8. 网吧母盘网上精华+个人总结=超详细
  9. 这7位年轻人正在通过科技让世界颤抖,预见中囯未来!
  10. 《ffmpeg入门学习》 五 多个图片合成一张图片
  11. OpenSocial版的51虚拟支付--ROCKYOU
  12. Nuvoton M0518 之 Slave SPI通信注意事项
  13. DPM目标检测算法(毕业论文节选)
  14. 迅雷11下载报错:下载引擎未启动
  15. 一年200多天不上网 看远望7号船员怎么玩抖音
  16. word/exce转lPDF乱码(思源字体)
  17. 新买的联想笔记本计算机选项,怎么我的计算机一开机全部都是雪花
  18. 怎样删除多余的本地连接
  19. LTE - RA preamble的选择与其发送所需prach资源的选择
  20. 强人工智能基本问题:自上而下还是自下而上? 1

热门文章

  1. C语言实现:替换空格(替换字符串中的空格)
  2. 禾穗HERS | 她三年拿下了沃顿哈佛双硕士,她是禾穗的第三位合伙人
  3. 程序员过中秋的一百种方式
  4. 亲测Trimble SX系列三维扫描机器人
  5. 【github】下载加速网站
  6. 抖店无法及时发货,应该怎么处理?
  7. 前端知识-表格知识+美化表格样式项目
  8. 管人用人育人留人之道-乔布斯法则
  9. .net 反射简单介绍
  10. SSIS: 代理执行作业时错误 [364] 没有启动 Messenger 服务 — 将不发送 NetSend 通知...