使用Python第三方库发送电子邮件的示例代码

目录
  • 1. 安装 yagmail 第三方库
  • 2. 开启 POP3、IMAP 和 SMTP 服务
    • 2.1 POP3、IMAP 和 SMTP 简介
    • 2.2 开启 POP3、IMAP、和 SMTP 协议
  • 3. 发送邮件
    • 3.1 发送第一封电子邮件
    • 3.2 群发邮件
    • 3.3 给邮件添加附件
    • 3.4 设置定时器
  • 4. 总结

Python 作为当前最热门的编程语言之一,不仅仅是因为它的学习成本低、入门容易,还因为它具有丰富的生态环境,包括内置的模块以及第三方的库,使用它能够做很多事情。例如,办公自动化也是 Python 涉及的领域之一,如果能够用好 Python, 能够显著提高我们的工作效率。

今天我们就来学习,如何使用 Python 发送电子邮件。

1. 安装 yagmail 第三方库

首先,我们来安装一个第三方库,yagmail 模块。这个库实现了发送电子邮件的功能,因此,我们需要进行安装。可以通过 pip 命令进行安装,命令如下:

pip install yagmail -i https://mirrors.aliyun.com/pypi/simple/

2. 开启 POP3、IMAP 和 SMTP 服务

那么在安装完模块之后,我们还需要在邮箱平台进行相应地设置,那为什么要设置呢?大家想一下,我们平时发送邮件都是在邮箱平台编辑发送的,那么现在我们要使用 Python 的第三方模块操控我们的邮箱,进行发送邮件。这个时候就需要邮箱平台给予 Python 的第三方模块权限了啊,让它代替邮箱平台进行发送邮件。
因此,我们需要在邮箱平台上进行设置,开启对应的协议以及第三方授权(需要手机短信验证、QQ 安全验证中心等等)。所以,下面我们需要对开启的协议做一个简单的介绍,之后再带着大家开启协议以及第三方授权。

2.1 POP3、IMAP 和 SMTP 简介

POP3: 即 Post Office Protocol3,意思就是邮局协议第三个版本。这个协议规定了将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议,帮助用户登录、取邮件和删除邮件等。
IMAP: 即 Internet Message Access Protocol, 意思就是邮件访问协议。它和 POP3 都是邮件访问最为普遍的 Internet 标准协议。它与 POP3 协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。
SMTP: 即 Simple Mail Transfer Protocol, 意思就是简单邮件传输协议。它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式,帮助每台计算机在发送或中转信件时找到下一个目的地址。

2.2 开启 POP3、IMAP、和 SMTP 协议

了解了 POP3、IMAP 和 SMTP 协议之后,接下来我们就要开启邮箱的 POP3、IMAP 和 SMTP 协议了。下面我以网易 163 邮箱为例进行演示,步骤如下:
登录 163 邮箱平台 -> 点击设置 -> 开启服务 -> 开启 IMAP/SMTP 服务 -> 开启 POP3/SMTP 服务
当然,在操作的过程中会涉及到发送短信验证码,大家只要跟着提示一步一步操作就行,使用微信扫描二维码就可以自动编辑信息,然后选择发送即可。
下面,给出具体清晰的图文教程:

第一步,点击设置 -> POP3/SMTP/IMAP

第二步,开启服务 -> 开启 IMAP/SMTP 服务

点击 “继续开启”

使用微信扫描二维码,发送短信之后,再点击 “我已发送”

复制并记住授权密码,这个后面登录邮箱要用到,之后点击 “确定”

第三步,开启服务 -> 开启 POP3/SMTP 服务

点击 “确定” 即可

最后,经过一系列的操作之后,我们就将 POP3、IMAP 和 SMTP 服务成功打开了,下面就准备进入到写 Python 代码的环节!

3. 发送邮件

3.1 发送第一封电子邮件

发送一封电子邮件的过程,需要发送方的账号、密码以及 SMTP 服务器域名,收件人的账号、邮件标题、邮件内容以及附件等等。值得注意的是,这里提到的发件人密码并不是我们平时登录邮箱平台的密码哦,而是我们在 2.2 小节中开启 IMAP/SMTP 服务时,得到的授权密码,我之前说过要复制存储下来的,就是在这个时候要用到啦!
OK 废话不多说了, 下面直接给出一段发送第一封邮件的具体代码:

import yagmail
# yagmail.SMTP(user='发件人邮箱账号', password='授权码', host='SMTP 服务器域名')
yag = yagmail.SMTP(user='xxx@163.com', password='xxxxxx', host='smtp.163.com')
contents = 'hello, this is the first email'   # 邮件内容
subject = '第一封邮件'                          # 邮件主题
receiver = 'xxx@qq.com'                       # 接收方邮箱账号
yag.send(receiver, subject, contents)
yag.close()
print('发送成功')

代码解析:

  • 使用 yagmail 第三方模块发送邮件非常简单。首先,调用 yagmail.SMTP() 方法指定发送方账号、授权码 和 SMTP 服务器域名, 登录到邮箱系统中。之后,使用 yag.send() 方法将接收方,主题和内容分别传送到对应的参数位置即可。
  • 发送完成之后,记得使用 yag.close() 退出登录状态,释放资源。
  • password 一定要小心存放,不要泄露,否则别人就相当于拿到了你的邮箱密码。

那么,我们可以运行这段代码。运行完成之后,看一下我的邮箱确实收到了刚才的邮件,截图如下所示:

大家可以看到,确实收到了邮件,这表明发送第一封邮件成功啦!
补充:

刚才我们说了授权密码一定要小心存放。那如何做才算“小心”呢?最好是授权密码不要出现在代码中,因此,我们可以将授权密码存储在系统中,每次登录时能够不用显式填写授权密码。操作过程如下:
首先,打开 Python 交互式环境,例如 IDLE 或者 Anaconda,如果使用的是 PyCharm,那么可以调出 Python Console:

然后,在命令行分别输入如下命令:

import yagmail
# yagmail.register(邮箱账号, 授权密码)
yagmail.register('xxx@126.com', 'xxx')

这样,就可以将授权密码存储在系统中,一定程度上保证了授权密码的安全性。在之后的代码中,我就可以不用将 password 传入到 yagmail.SMTP() 方法的参数中。

3.2 群发邮件

那么通过上一小节的学习,我们掌握了如何发送第一封电子邮件。但是,在日常使用中,我们常常需要发送通知之类的邮件,这类邮件往往接收方是多个的,不止一个接收方。下面我们再来看一下,当我需要群发邮件的时候,是如何做的。
老规矩,直接贴代码:

import yagmail

# yagmail.SMTP(user='发件人邮箱账号', host='SMTP 服务器域名')
yag = yagmail.SMTP(user='xxx@163.com', host='smtp.163.com')
contents = 'Happy New Year'   # 邮件内容
subject = '新年快乐'                          # 邮件主题
receivers = ['xxx@qq.com', 'xxx@126.com', 'xxx@163.com']  # 接收方们的邮箱账号
yag.send(receivers, subject, contents)
yag.close()
print('发送成功')

代码解析:
大家可以看到,群发邮件的代码和上一小节的代码,不同的地方就是接收方。群发邮件肯定意味着有一个或多个收件人,因此我只需要定义一个接收方列表 receivers, 将多个接收方的账号放在列表里,随便你放多少个都可以。之后再将这个列表作为参数放到 yag.send() 方法中,就可以实现群发邮件的目的了,就是这么简单!

3.3 给邮件添加附件

在发送邮件时,我们经常需要用到附件。例如,我们上交方案给公司领导时,将方案作为邮件的附件发送给领导审查,领导收到邮件后打开附件进行预览或下载。具体的代码如下所示:

import yagmail
# yagmail.SMTP(user='发件人邮箱账号', password='授权码', host='SMTP 服务器域名')
yag = yagmail.SMTP(user='xxx@163.com', host='smtp.163.com')
contents = 'Happy New Year'   # 邮件内容
subject = '新年快乐'                          # 邮件主题
receivers = ['xxx@qq.com', 'xxx@126.com', 'xxx@163.com']  # 接收方们的邮箱账号
attachments = [r'C:\Users\Desktop\设计方案一.docx', r'C:\Users\Desktop\设计方案二.docx', r'C:\users\Desktop\汇报.pptx']
# yag.send(接收方,主题,内容,附件)
yag.send(receivers, subject, contents, attachments)
yag.close()
print('发送成功')

代码解析:
在上面的代码中,相比之前两个小节的代码,我们增加了一个 attachments 变量,这是一个列表类型的变量,存放着附件在我们计算机上的位置以及名称。当有多个附件时,我们可以将多个附件的名称统统存放到列表中。之后,使用 yag.send() 方法,可以看到 attachments 放在最后一个参数的位置。

3.4 设置定时器

下面我们再进阶一下,对我们的邮件发送设置定时器,使得可以定时发送邮件。这里关键就是定时器功能的调用,需要我们安装 schedule 模块,这个模块含有很多关于调度以及定时相关的方法。安装命令如下

pip install schedule -i https://mirrors.aliyun.com/pypi/simple/

定时器和闹钟一样,你可以设置 day、week、hour、mintues、second, 设定定时触发函数执行任务。在这里就是定时触发函数,定时发送邮件。具体代码如下所示:

import time
import yagmail
import schedule

# yagmail.SMTP(user='发件人邮箱账号', password='授权码', host='SMTP 服务器域名')
yag = yagmail.SMTP(user='xxx@163.com', host='smtp.163.com')
def message():
    contents = '早安朋友,新的一周开始啦!'         # 邮件内容
    subject = '早安'                            # 邮件主题
    receivers = ['xxx@qq.com', 'xxx@126.com']  # 接收方们的邮箱账号
    attachments = [r'C:\Users\\Desktop\早安.jpg', r'C:\Users\Desktop\早安.png']
    yag.send(receivers, subject, contents, attachments)
    print('发送成功')

# 设定时间:每周星期一早上7点钟发送邮件
schedule.every().monday.at('07:00').do(message)
while True:
    schedule.run_pending()
    time.sleep(3)
yag.close()

代码解析:

定义 message() 函数,实现指定发送邮件的内容、主题、附件、接收方。

schedule.every() 后面可以是 day、hour、week、monday、tuesday、wednesday 等等,在上面的代码中,意思就是每周星期一早上7点发送邮件。例如,如果想要实现每隔 30 秒发送邮件,可以写成 schedule.every().minute.at(":30").do(message)

while True 表示一个死循环,因为我们要求每周一发送邮件,所以一直处于一个监控的状态,时间一到就执行任务。schedule.run_pending() 表示运行所有任务。

4. 总结

以上就是关于使用 Python 第三方库发送电子邮件的一个入门的教程,是不是很简单呢?如果想要实现更加复杂的功能,还需要到官网了解第三方库的更多教程,学无止境,这只是一个入门示范的教程!
总之,Python 可以用更少的代码做更多的事情!

到此这篇关于使用 Python 第三方库发送电子邮件的文章就介绍到这了,更多相关使用 Python 第三方库发送电子邮件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python3利用SMTP协议发送E-mail电子邮件的方法

    前言 本文主要给大家介绍了关于Python3用SMTP协议发送电子邮件的相关内容,在介绍如何使用python程序向指定邮箱发送邮件之前,我们需要先介绍一下有关电子邮件的相关知识. Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的. 假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com,现

  • python SMTP实现发送带附件电子邮件

    本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下 可采用email模块发送电子邮件附件.发送一个未知MIME类型的文件附件其基本思路如下: 1. 构造MIMEMultipart对象做为根容器 2. 构造MIMEText对象做为邮件显示内容并附加到根容器 3. 构造MIMEBase对象做为文件附件内容并附加到根容器 a. 读入文件内容并格式化 b. 设置附件头 4. 设置根容器属性 5. 得到格式化后的完整文本 6. 用smtp发送邮件 具体内容参见

  • Python如何通过Flask-Mail发送电子邮件

    这篇文章主要介绍了Python如何通过Flask-Mail发送电子邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 采用Flask-Mail模块发送电子邮件 代码如下 ##python程序 命名为hello.py import os from flask import Flask from flask_mail import Mail from flask_script import Manager app = Flask(__name__)

  • Python SMTP发送电子邮件的示例

    简单邮件传输协议(SMTP)是一种协议,用于处理在电子邮件服务器之间发送电子邮件和路由电子邮件.Python提供了smtplib模块,该模块定义了一个SMTP客户端会话对象,该对象可用于将邮件发送到具有SMTP或ESMTP侦听器守护程序的任何Internet计算机. SMTP对象具有一个称为sendmail的实例方法,该方法通常用于完成邮件的发送工作.它需要三个参数- sender- 具有发件人地址的字符串. receivers- 字符串列表,每个接收者一个. message- 以各种RFC中指

  • 如何基于Python实现电子邮件的发送

    这篇文章主要介绍了如何基于Python实现电子邮件的发送,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用Python smtplib.SMTP类方法来实现电子邮件的发送. 列举SMTP对象常见的方法: sendmail(from, to ,msg[,mopts,ropts]) :将msg从from发送至to(以列表或元组表示),选择性设置ESMTP邮件(mopts)和收件人(ropts)选项 login(user,passwd): 使用用户

  • 使用Python第三方库发送电子邮件的示例代码

    目录 1. 安装 yagmail 第三方库 2. 开启 POP3.IMAP 和 SMTP 服务 2.1 POP3.IMAP 和 SMTP 简介 2.2 开启 POP3.IMAP.和 SMTP 协议 3. 发送邮件 3.1 发送第一封电子邮件 3.2 群发邮件 3.3 给邮件添加附件 3.4 设置定时器 4. 总结 Python 作为当前最热门的编程语言之一,不仅仅是因为它的学习成本低.入门容易,还因为它具有丰富的生态环境,包括内置的模块以及第三方的库,使用它能够做很多事情.例如,办公自动化也是

  • python第三方库visdom的使用入门教程

    概述 Visdom:一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享.支持Torch和Numpy还有pytorch. visdom 可以实现远程数据的可视化,对科学实验有很大帮助.我们可以远程的发送图片和数据,并进行在ui界面显示出来,检查实验结果,或者debug. 要用这个先要安装,对于python模块而言,安装都是蛮简单的: pip install visdom 安装完每次要用直接输入代码打开: python -m visdom.server 然后根据提示在浏览器中输入相应

  • 2020年10款优秀的Python第三方库,看看有你中意的吗?

    相对于numpy.TensorFlow.pandas这些已经经过多年维护.迭代,对于大多数Python开发者耳熟能详的库不同. 今天要给大家介绍的是诞生于2020年的新鲜Python库,而且,本文介绍的这10个Python库一直都受到非常好的维护. 废话不多说,下面开始本文的正式内容! 1. Typer 或许,你并非经常编写 CLI 应用程序,但是当你编写时,有可能会遇到很多障碍. 继FastAPI的巨大成功之后,tiangolo用同样的原则为我们带来了Typer[1]:一个新的库,它能让你利用

  • python 第三方库paramiko的常用方式

    介绍 paramiko是什么可以参考其他人的博客或文章,这里不再赘述,直入正题. 本次测试的版本信息如下: python 3.9 paramiko 2.7.2 centos 8 三种常用方式 paramiko 的三种常用方式如下: 使用密码进行登录 使用密钥免密码登录 SFTP 传输文件 其中最割裂的就是SFTP 传输文件,很多文章登陆使用SSHClient类,传输文件使用Transport类,我也是这样用了很长时间. 如果你也是这么用的,你没有啥想法吗?用python就是节约心智,怎么一个变形

  • Python实现邮件发送功能的示例详解

    想实现发送邮件需要经过以下几步: 1.登录邮件服务器 2.构造符合邮件协议规则要求的邮件内容 3.发送 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件,它对smtp协议进行了简单的封装. 这里我们用qq邮箱为例,并且自己是可以给自己发邮件的. 在开始前我们先做准备工作: 登录qq邮箱,后点击“设置” 点击“账户” 确保前两项已开启,然后点击生成授权码. 因为我们网页登录时的密码是不可以用来python上使用:qq为了安全,我们平

  • python 第三方库的安装及pip的使用详解

    python是一款简单易用的编程语言,特别是其第三方库,能够方便我们快速进入工作,但其第三方库的安装困扰很多人. 现在安装python时,已经能自动安装pip了 安装成功后,我们可以在Scripts 文件夹下看到pip 使用pip 安装类库也比较简单 pip install ... 即可 以上这篇python 第三方库的安装及pip的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 无法使用pip命令安装python第三方库的原因及解决方法

    再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的Scripts文件夹里面.我们可以把dos切换到对应的文件夹,再使用pip命令就可以了. 如果你在使用pip命令安装Python第三方库时也出现下面这样. 这是我在安装requests库时 我们发现pip命令无法使用,这时我们看一下python文件夹下的Scripts文件,如下 我发现我里面有pip和easy_install,也就是我可以使用pip命令所以我们要在这个文件夹下使用pip命令

  • Python第三方库h5py_读取mat文件并显示值的方法

    mat数据格式是Matlab默认保存的数据格式.在Python中,我们可以使用h5py库来读取mat文件. >>> import h5py >>> data = h5py.File("**.mat") >>> test = data["digitStruct/name"] #<HDF5 dataset "name": shape (13068, 1), type "|O&quo

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

随机推荐