Python实战之自动发送邮件的实现

目录
  • 1.开启SMTP服务
  • 2.准备
  • 3.编写脚本
  • 4.小例子

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

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

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

1.开启SMTP服务

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

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

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

2.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点

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

1. Windows 环境 打开 Cmd (开始-运行-CMD)。

2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。

3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install yagmail

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

3.编写脚本

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

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

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

import time
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
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自动发送邮件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python自动发送邮件脚本

    本文实例为大家分享了python自动发送邮件的具体代码,供大家参考,具体内容如下 #coding=utf8 ''''' 该模块使自动发送邮件的模块 模块初始化时需要设置: sender:发送人 reciver:接收者 smtpServer:发送人的服务器类型 password:登录命令 subject:邮件标题 datafile:数据文件 文件包含六个函数: senderLogin():连接服务并登录服务 setSubject():设置邮件标题 SendMessage():邮件发送的信息 sen

  • Python自动发送邮件的方法实例总结

    本文实例讲述了Python自动发送邮件的方法.分享给大家供大家参考,具体如下: python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容). email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等

  • Python自动化办公之邮件发送全过程详解

    使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间.操作前配置(以较为复杂的QQ邮箱举例,其他邮箱操作类似) 单击设置-账号,滑倒下方协议处,开启IMAP/SMTP协议(IMAP,即Internet Message Access Protocol(互联网邮件访问协议),可以通过这种协议从邮件服务器上获取邮件的信息.下载邮件等.IMAP与POP类似,都是一种邮件获取协议.) (ps.开启需要验证) 记住端口号,后续写代码发送邮件时候需要: 生成授权码,前期配置完

  • python自动化发送邮件实例讲解

    在python中,通过如下两个模块可以实现邮件的自动化操作 smtplib email smtplib模块是对SMTP协议的封装,用于发送邮件:email模块用于构建邮件内容,支持以下3种形式的邮件 纯文本 html 带附件 首先来看下邮件的构建,对于一封邮件,需要指定发件人,收件人,主题,正文等内容,以最简单的纯文本邮件为例,构建方式如下 >>> from email.mime.text import MIMEText >>> from email.header im

  • Python自动发送和收取邮件的方法

    作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取和发送就很浪费时间--人生苦短,我用Python. 直接上代码,不想了解细节原理直接拉到最后,我封装成了两个函数,根据提示,输入参数,直接调用就行.亲测可行 不想看细节这部分可以直接跳过,但是运行的时候要把这一块也粘贴进去. 导入相关库 import smtplib,ssl from email.mime.multipart import MIMEMultipart from email

  • Python实战之自动发送邮件的实现

    目录 1.开启SMTP服务 2.准备 3.编写脚本 4.小例子 自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢? 类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件:网站宕机了,实时发送邮件提醒:网站负载过高,发送邮件提醒......等等. 下面就来讲讲怎么用Python构建一个自动发送邮件的脚本. 1.开启SMTP服务

  • 基于python SMTP实现自动发送邮件教程解析

    最近工作中的一个项目需要自动发送一些信息邮件到指定邮箱的需求,那么如何实现Python自动发送邮件的功能呢?接下来我们就来简单的介绍下如何利用Python来实现自动发送邮件的功能. Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议 ,说白了就是发送邮件的协议,python的smplib库对SMTP协议进行了简单的封装,提供了对SMTP的支持,可以发送纯文本邮件.HTML文件以及带附件的邮件. 首先我们构建一个SendEmai

  • Python如何实现自动发送邮件

    目录 自动发送邮件 使用邮箱的第一步 一份邮件的组成 正式发送一份邮件 批量发送邮件 自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ邮箱.163邮箱.126邮箱等这些比较常用的邮箱时,只需要输入账号和密码就可以.但是在使用手机端的企业邮箱的时候,一般都需要配置一下,常规的配置界面如下所示: 就是除了在输入账号密码以外,还需要输入一个服务器链接地

  • python实现自动发送邮件发送多人、群发、多附件的示例

    1.最近公司实现部分数据统计.分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linux上使用shell配置发送,实在是太繁琐,所以准备使用python来实现该功能,不过发现网上各种文档都是未经过整理,代码写的很不友善,比如发送多人的只能发送前一个邮箱,附件写死不灵活等等,故特写一遍比较记录. 主要会遇到的几个问题: 1.smtplib.SMTPAuthenticationError: (550, b'User has no permissi

  • python实现自动发送邮件

    自动发送邮件功能是我们经常要用到的,比如每天定时统计报表信息,然后自动发送给运营人员,协助运营人员进行业务数据分析.本文是用Python写的一个自动发送邮件的脚本,调用函数时,直接把发件人邮箱地址.密码.收件人邮箱地址.邮件标题.内容等信息传递给函数,即可实现自动发送邮件功能. 脚本代码如下: # -*- coding: UTF-8 -*- import sys, os, re, urllib, urlparse import smtplib import traceback from emai

  • python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMTP服务 记住这个授权码,这个授权码就是Python脚本中登录邮箱时的密码,而不是你平时登录邮箱时的那个密码 一.发送普通文本邮件 #发送多种类型的邮件 from email.mime.multipart import MIMEMultipart msg_from = '1508691067@qq.c

  • 趣味Python实战练习之自动更换桌面壁纸脚本附源码

    目录 前言 目标地址 先是爬虫代码 导入数据 请求数据 解析数据 保存数据 运行代码,查看结果 自动跟换桌面壁纸代码 最后实现效果 前言 发现一个不错的壁纸网站,里面都是超高清的图片,而且还是免费为的. 所以,我打算把这些壁纸都爬取下来,然后在做一个自动跟换桌面壁纸的脚本,这样基本上你一年都可以每天都有不重复桌面了 目标地址 先来看看我们这次的受害者:https://wallhaven.cc/ [付费VIP完整版]只要看了就能学会的教程,80集Python基础入门视频教学 点这里即可免费在线观看

  • python结合shell自动创建kafka的连接器实战教程

    目录 环境 安装连接oracle的python包 获取oracle表信息 去掉多余部分 shell 脚本处理表信息文件 增强版处理表信息脚本 环境 cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018

随机推荐