【Python】使用smtplib和email库可以实现Python脚本发送电子邮件

2023-11-06

前言

        在 Python 有很多方向可以应用,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。Python 是动态脚本语言,所以代码逻辑比 Java 要简要很多,实现同样的功能少写很多代码,而且Python 生态有众多的第三方工具库,只需要调用接口,就能使用复杂的功能。

        本期通过使用 smtplib 库和 email 库可以实现Python脚本发送电子邮件,并可以实现群发效果。

邮件说明(以网易163邮箱说明)

163邮箱-写邮件

         通过图中标注,一份邮件主要有:发件人、收件人、邮件主题、附加、正文、图片等要素功能,通过 Python 来实现发邮件这些基本都要涉及到,还有要设置服务器地址以及邮箱授权码(文章最后教程)

网易邮箱(163邮箱)服务器类型及地址

 Python脚本代码

#-*-coding:GBK -*- 

import smtplib

# 负责构造文本
from email.mime.text import MIMEText
# 负责构造图片
from email.mime.image import MIMEImage
# 负责将多个对象集合起来
from email.mime.multipart import MIMEMultipart
from email.header import Header

# SMTP服务器,这里使用163邮箱
mail_host = "smtp.163.com"

# 发件人邮箱
mail_sender = "******@163.com"

# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
mail_license = "********"

# 收件人邮箱,可以为多个收件人
mail_receivers = ["******@qq.com","******@163.com"]

mm = MIMEMultipart('related')

# 邮件主题
subject_content = """Python邮件测试"""

# 设置发送者,注意严格遵守格式,里面邮箱为发件人邮箱
mm["From"] = "sender_name<******@163.com>"

# 设置接受者,注意遵守格式,里面邮箱为接受者邮箱
mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@163.com>"

# 设置邮件主题
mm["Subject"] = Header(subject_content,'utf-8')

# 邮件正文内容
body_content = """你好,这是一个测试邮件!"""

# 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
message_text = MIMEText(body_content,"plain","utf-8")

# 向MIMEMultipart对象中添加文本对象
mm.attach(message_text)

# 二进制读取图片
image_data = open('c.jpg','rb')

# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())

# 关闭刚才打开的文件
image_data.close()

# 设置图片名称
message_image["Content-Disposition"] = 'attachment; filename="c.jpg"'

# 添加图片文件到邮件信息当中去
mm.attach(message_image)

# 构造附件(以Excel文件为例)
atta = MIMEText(open('ceshi.xlsx', 'rb').read(), 'base64', 'utf-8')

# 设置附件信息
atta["Content-Disposition"] = 'attachment; filename="ceshi.xlsx"'

# 添加附件到邮件信息当中去
mm.attach(atta)

# 创建SMTP对象
stp = smtplib.SMTP()

# 设置发件人邮箱的域名和端口,端口地址为25
stp.connect(mail_host, 25)

# set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
stp.set_debuglevel(1)

# 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
stp.login(mail_sender,mail_license)

# 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())

print("邮件发送成功")
# 关闭SMTP对象
stp.quit()

        注:按照自己的进行修改填写哦 

测试效果

 获取邮箱授权码教程

 网易邮箱:登录邮箱——设置——POP3/SMTP/IMAP——开启服务(两个都可以)——验证后即可获得邮箱授权码

QQ邮箱:登录邮箱——设置——账户——POP3/IMAP/SMTP服务——开启服务——生产授权码


结尾

        以上就是本期内容,如有问题留言或私信,会进行解答的哦,记得点赞关注加收藏

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python】使用smtplib和email库可以实现Python脚本发送电子邮件 的相关文章

  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • request.getSession().setAttribute()和 request.setAttribute()

    今天在写代码被session值给郁闷了很久 一直想让adminid这个值在jsp页面全程都可以用 但由于我一直用request setAttribute 所以一直没有解决 害得我为了得到这个值费了好大的劲 后来看了书才发现原来用reques
  • 1.7从标准输入读命令并执行

    类似于之前的 把代码抄一遍并运行 一脸懵逼 似乎是通过fork 获取进程pid pid必须大于0 waitpid 返回的值也不能 gt 0 也不知道在终端的 后面写什么 看看书上怎么写的 如果懂了就学到东西了 发现抄错了 重新抄 重新运行
  • 蓝盾初赛二阶段

    因为在上课 做的时间较短 Web 签到题 限制了最大输入长度为3位 Burpsuite拦截输入个较大的数即可 简单的题 有源码 利用PHP的strcmp函数漏洞 输入一个数组即可 送大礼 打开后是一大堆JSFU
  • UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘xa0‘ in position 1227: illegal multibyte seq

    问题的中文解释 UnicodeEncodeError gbk 编解码器无法对位置 1227 中的字符 xa0 进行编码 非法的多字节序列 问题如下图所示 问题出现的原因 出现这个问题 不要慌 其实就是编码格式的问题 看了很多网上的解决办法
  • vue-cli3移动端引入高德地图获取当前定位效果,并可手动搜索改变定位地址

    前言 vue cli3 4中引入高德地图实现我们的定位效果 也可动态改变值 效果图 实现步骤 步骤一 申请高德的key 步骤二 在public index html里面添加 步骤三 在页面上引入这个组件 官网地址与api地址 官网地址 ap
  • oracle600错误,ora-600错误如何处理

    ORACLE ORA 00600错误不是你的程序错误 是ORACLE内部的错误 一般来说 大部分的ORA 00600错误均是由ORACLE 软件的bug所导致 因此对于这样的错误需要及时联系ORACLE技术支持工程师 对于这种类型的ORA
  • python如何运用ols_使用OLS回归(Python,StatsModels,Pandas)预测未来值

    我目前正试图在Python中实现一个MLR 我不知道如何去应用我发现的未来值的系数 使用OLS回归 Python StatsModels Pandas 预测未来值 import pandas as pd import statsmodels
  • SQL server用户

    Sybase中的用户分为两种 SQL服务器用户和数据库用户 安装完SQL服务器后 系统自动建立一个SQL服务器用户sa 口令为空 即系统管理员 他对整个系统有操作权 其他用户均由系统管理员建立 在SQL Server中有三种特殊的用户 系统
  • linux使用crontab命令定时重启服务

    服务器不重启的情况下定时自动重启apache及mysql服务 其实也大同小异 具体步骤如下 一 每天的12点及16点重启apache及mysql服务 root www bin cd opt root www opt vim reboot t
  • java链接Oracle(JDBC)

    工具 eclipse jdk 1 8 oracle 11g ojdbc6 jar 数据库驱动包 JDBC的六大步骤 这里我们就按照jdbc的这六大步骤执行下去 注册驱动 获取连接 获取执行sql语句对象 执行sql语句 处理结果集 关闭资源
  • python中lambda的用法

    一 lambda 在Python中 lambda 表达式是一种匿名函数的方式 用于创建简单的 小型的函数 它通常在需要一个函数 但不需要定义一个完整的函数 使用 def 关键字 的情况下使用 lambda 表达式的语法如下 lambda a
  • python程序运行按什么键_如何编写和运行Python程序

    本篇介绍在Windows Linux Mac OS不同环境下如何编写和运行Pyhton程序 通过本篇的学习 可以达成如下目标 使用Pyhton自身提供的交互式解释器编写Python程序 使用Python自身提供的IDLE集成开发环境编写Py
  • HTML+CSS实现的简单注册表单

    效果总览 具体代码实现
  • 设置Docker阿里云镜像加速源

    设置Docker阿里云镜像源 打开文件 vi etc docker daemon json 做如下编辑 registry mirrors https xxxxxxx mirror aliyuncs com 如下 获取加速器地址 做如下操作
  • 面试高频考点 -- 常见的排序算法(7种)

    目录 1 直接插入排序 2 希尔排序 3 选择排序 4 堆排序 重要 5 冒泡排序 加优化 6 快速排序 重要 7 归并排序 重要 常见排序 稳定性 两个相等的数据 如果经过排序后 排序算法能保证其相对位置不发生变化 例如 1 直接插入排序
  • 阿里云双十二好物推荐:「mPaaS 安全加固」带你看看别人家的应用

    别人家的小孩 全世界第一可爱 但是 别人家的移动应用 搭载的可能是你写的代码 金融 教育 手游 影音视听 民生政务 社交 交通出行 电子商务 mPaaS 应用安全加固 双12荣耀返场
  • linux查看文件大小信息

    df h查看系统中文件的使用情况 Size 分割区总容量 Used 已使用的大小 Avail 剩下的大小 Use 使用的百分比 Mounted on 路径地址 FreeBSD下 当硬盘容量已满时 您可能会看到已使用的百分比超过 100 因为
  • 空调开关html,酒店墙上空调开关图解—酒店墙上空调开关图案是什么意思

    我们很多人都有住酒店的经验的 有的人事为了出差住酒店 有的人是为了去旅游 当然了 也有的人事为了爱情去酒店 二随着夏天即将到来 炎热的天气将在夏季让气温越来越热 空调已成为每个人最近购买的主要电器 随着技术的发展 中央空调已成为业界的热门产
  • 转:阿里曾鸣:下一个风口是产业互联网

    未来三年 产业互联网的突破将是可见的方向 目前为止 产业互联网的连接尚处于浅连接阶段 企业对互联网思维的应用也停留在 互联网 上 事实上 运用互联网技术工具进行的再构和创新 可能是乘数效应 他判断 未来有两条路径 一是传统产业向智能商业的升
  • 【Python】使用smtplib和email库可以实现Python脚本发送电子邮件

    前言 在 Python 有很多方向可以应用 比如爬虫 预测分析 GUI 自动化 图像处理 可视化等等 可能只需要十几行代码就能实现酷炫的功能 Python 是动态脚本语言 所以代码逻辑比 Java 要简要很多 实现同样的功能少写很多代码 而