python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复
在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。
一、获取邮箱的SMTP授权码。
1、要发送邮件,首先要获取对应邮箱的SMTP授权码,有了这个SMTP授权码才能发送邮件。
以qq邮箱为例:
1)首先登录主页,在主页上面,点击设置,点击账户。

2)在账户页面一直往下拉,找到如下图所示位置。

3) 点击POP3/SMTP服务中的开启按钮。点击开启后,会有一个手机验证,把需要发送的内容发送到指定号码,然后点击“我已发送”按钮。

4)之后会自动跳出一个框,里面就包含着SMTP授权码,把它复制下来,储存到一个地方方便以后调用

5)同理,你要给网易邮箱发送邮件的话,你也要登录网易邮箱,然后获取SMTP授权码。

二、编写发送代码
1、首先安装邮件发送的库smtplib
2、引入邮件发送的库
import smtplib#引入控制邮箱发送邮件的库
from email.mime.text import MIMEText
3、新建邮件对象,填入邮件的正文内容和发件人、收件人等信息。
#1.邮件正文内容
msg = MIMEText('测试邮件正文内容')user ='你自己的qq号@qq.com' #发件人邮箱
pwd = '你自己的SMTP授权码' #邮箱的SMTP授权码
to = '你自己设置的收件人邮箱'#收件人,可以写多个收件人,用英文逗号隔开#2.设置邮件主题、发件人、收件人
msg[ 'Subject' ] ='测试邮件主题!'#邮件的标题
msg[ 'From ' ] = user#设置发件人
msg['To'] = to#设置收件人
其中要在pwd变量中输入你第一步得到的SMTP授权码。然后要设置发件人,也就是你自己的邮箱,还有就是收件人的邮箱,收件人的邮箱可以是多个,多个之间用英文的逗号隔开即可。
4、调用qq邮箱服务,登录邮箱,发送邮件
#3.发送邮件
s = smtplib.SMTP_SSL ('smtp.qq.com', 465)#选择qq邮箱服务,默认端口为465
s.login(user, pwd)#登录qq邮箱
s.send_message(msg)#发送邮件
s.quit()#退出邮箱服务
print( ' Success! ')
其中smtp.qq.com为qq邮箱服务名,465为邮箱端口号,这对于qq邮箱是固定的,不可修改。
如果是网易邮箱,则使用smtp.163.com,端口号还是465
5、测试发送文件。发送成功!!!
三、发送HTML邮件
有的情况下,我们需要发送html格式的邮件,那么我们应该怎么做呢?
关键点就是新建邮件对象时,指定邮件的格式为html:
mail_msg = '''
<p>这个是一个常规段落</p>
p><a href="https : / /www.baidu.com">这是一个包含链接的段落</a></p>
'''
msg = MIMEText(mail_msg, 'html' , 'utf-8')
其中,mail_msg就是我们的html格式的邮件内容,然后把之前的msg = MIMEText('测试邮件正文内容')增加两个参数,一个参数指定格式为html,另一个参数指定编码方式为utf-8 。
其它代码和普通邮件发送的代码一样。
四、发送邮件附件
有时我们需要在发送邮件正文内容的同时附上邮件附件,而如果想实现自动发送邮件附件,我们需要将之前的代码做些修改。
1、引入MIMEMultipart功能,并且创建一个可以同时添加正文和附件的MIMEMultipart()对象,并把它赋值给msg变量
from email.mime.multipart import MIMEMultipart
msg =MIMEMultipart()
2、将前面html格式的邮件正文mail_msg的内容添加到msg中
#先添加正文内容
msg.attach(MIMEText(mail_msg, 'html' , 'utf-8' ))
3、然后在将附件添加到msg中
#再添加附件,这里的文件名可以有中文,但下面第三行的filename不可以为中文
attl = MIMEText(open( 'E:\\test.docx', 'rb' ) .read(), 'base64' , 'utf-8')
attl["Content-Type"] = 'application/octet-stream'
#下面的filename是在邮件中显示的名字及后缀名,名字可以不同,但不可以为中文!!
att1["Content-Disposition"] = 'attachment; filename="test.docx" '
msg.attach(att1)
在写文件路径的时候,最好还是用两个反斜杠来防止单个斜杠导致的特殊含义,这里的文件路径可以写成中文内容,因为这里设置了utf-8编码。
注意:如果有的时候显示文件路径报错,那么把里面大写的字母换成小写即可,这个是个经验手段,仅在这里适用。
filename里不可以写中文,否则会报错!
4、后面发送的代码都是和之前一样的。
五、定时发送邮件
可以用以下两种方式实现定时发送。
1、通过while True实现定时任务:
把发送邮件的代码放到一个函数中,然后在while中定时调用这个函数实现定时发送。
import timewhile True:send_email()time.sleep(86400)
一天是86400秒,所以使用time每休息一天就调用一次发送邮件的代码,需要定义一个叫send_email 的函数,把之前发送邮件的代码,放在该函数中。
2、通过schedule库实现定时任务。
1)安装schedule库:pip install schedule
2)每天8:00定时调用发送邮件的函数
import schedule
schedule.every().day.at( "8:00" ).do(send_email)
while True:schedule.run_pending()time.sleep ( 10)
schedule定义了每天8:00调用一次send_email函数,at后的括号里是具体的时间,do后的括号里是需要执行的函数。其作用是将该任务放入定时计划中,如果要实现每天都执行,还需要加一个while循环,schedule.run_pending()的含义为运行所有可以运行的schedule任务,time.sleep(10)是让schedule任务运行完休息10秒钟再检测是否有可以运行的任务。
六、自动回复邮件
在收到别人的邮件后,我们可以设置一个自动回复功能,通常用来通知对方,邮件已经收到了,作为一个友好的反馈。邮件自动回复的这个功能不需要程序来实现,一般的邮箱都自带这个功能,比如qq邮箱的话,打开设置,常规设置:

下拉到假期自动回复的设置那里:
点击启用选项,然后输入自动回复的内容,在下面不要选仅对联系人中的邮件地址进行回复。最后在左下角保存更改即可:
这样,不管谁给你发送邮件,都可以自动回复他了。
相关文章:
python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复
在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。 一、获取邮箱的SMTP授权码。…...
数学-快速幂
从一个简单的问题说起: 给出整数m,n和p,要求计算(m ^ n) % p的结果。 #include <iostream> using namespace std;int main() {long long m, n, p;cin >> m >> n >> p;long long ans 1;for (long long i 0; i < …...
DevEco鸿蒙应用开发-第一个App
目录下载开发环境创建工程登录华为账户测试应用下载开发环境 前往官网下载 DevEco 开发环境:https://developer.harmonyos.com/cn/develop/deveco-studio#download 下载并安装,请记住你选择的 IDE 与 SDK 安装位置,后续可能会用到ÿ…...
又一款全新的基于 GPT4 的 Python 神器Cursor,关键还免费
chartgpt大火之后,随之而来的就是一大类衍生物了。 然后,今天要给大家介绍的是一款基于GPT4的新一代辅助编程神器——Cursor。 它最值得介绍的地方在于它免费,我们可以直接利用它来辅助我们编程,真正做到事半功倍。 注意&#…...
CSS的浮动(下)
🌟所属专栏:前端只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新前端的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…...
软件测试-性能测试流程
压测任务具体包含: 0.前期准备 尽量参与业务需求评审,可以对业务有更深入的了解,了解哪些功能是核心功能,哪些可能存在性能瓶颈,以便在性能需求评审的时候能给出有建设性的意见 1.性能需求分析、评审 明确测试范围(哪些业务接口)、目标(tps、rt、成功率) 关于性能需…...
【python实操】年轻人,别用记事本保存数据了,试试数据库吧
为什么用数据库? 数据库比记事本强在哪? 答案很明显,你的文件很多时候都只能被一个人打开,不能被重复打开。当有几百万数据的时候,你如何去查询操作数据,速度上要快,看起来要清晰直接 数据库比我…...
铁威马NAS教程之利用docker快速搭建个人在线书库
这是一个基于Calibre的简单的图书管理系统,支持在线阅读。主要特点是:美观的界面、支持多用户、支持在线阅读、支持邮件推送、支持OPDS、支持一键安装,网页版初始化配置,轻松启动网站等等。 那么,如何利用docker快速搭…...
504. 七进制数——【Leetcode每日一题】
504. 七进制数 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。 示例 1: 输入: num 100 输出: “202” 示例 2: 输入: num -7 输出: “-10” 提示: −107<num<107-10^7 < num < 10^7−107<num<107 思路&…...
RocketMQ源码(24)—DefaultMQPushConsumer延迟消息源码
基于RocketMQ release-4.9.3,深入的介绍了DefaultMQPushConsumer延迟消息源码。 文章目录1 load加载延迟消息数据1.1 parseDelayLevel解析延迟等级2 start启动调度消息服务3 DeliverDelayedMessageTimerTask投递延迟消息任务3.1 executeOnTimeup执行延迟消息投递3.2…...
计算机视觉知识点(一)——交并比(IoU)及其若干改进
交并比(IoU)前言IoU公式及示意图IoU Loss缺点GIoU Loss公式及示意图缺点DIoU公式及示意图CIoU前言 目标检测是一个常见的计算机视觉任务,在目标检测任务中,交并比作为评判检测框的标准具有很重要的意义,在实际的应用中…...
一篇文章教你从零到一搭建自动化测试框架(附视频教程+源码)
目录 前言 1. 什么是自动化测试框架? 2. 没有万能的测试框架,适合自己项目的,能提高工作效率的就是好框架。 3. 设计框架的思路: 4.如何开展自动化测试 前言 关于测试框架的好处,比如快速回归提高测试效率&#x…...
【备战蓝桥杯】----01背包问题(动态规划)
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
Golang1.18新特性介绍——泛型
社区长期高呼的泛型特性在Golang 1.18中终于正式发布,Go泛型实现与传统的C有较大差异,更像Rust的泛型实现。本文详细介绍Golang泛型及其特性,包括泛型语法、类型参数、类型约束、类型近似以及constraints包提供内置类型等。 最近写Dao代码&am…...
【SpringBoot17】SpringBoot中使用Quartz管理定时任务
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任务的时候&…...
杨辉三角形 (蓝桥杯) JAVA
目录题目描述:暴力破解(四成):二分法破解(满分):题目描述: 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如…...
AI制药 - AlphaFold Multimer 的 MSA Pairing 源码
目前最新版本是v2.3.1,2023.1.12 AlphaFold multimer v1 于 2021 年 7 月发布,同时发表了一篇描述其方法和结果的论文。AlphaFold multimer v1 使用了与 AlphaFold 单体相同的模型结构和训练方法,但增加了一些特征和损失函数来处理多条链。Al…...
TitanIDE:云原生开发到底强在哪里?
原文作者:行云创新技术总监 邓冰寒 引言 是一种新的软件开发方法,旨在构建更可靠、高效、弹性、安全和可扩展的应用程序。与传统的应用程序开发方式不同,云原生是将开发环境完全搬到云端,构建一站式的云原生开发环境。云原生的开…...
单片机常用完整性校验算法
一、前言 单片机在开发过程中经常会遇到大文件传输,或者大量数据传输,在一些工业环境下,数据传输并不是很稳定,如何检验数据的完整性就是个问题,这里简单介绍一下单片机常用的几种数据完整性校验方法。 二、CheckSum校…...
Anaconda 的安装配置及依赖项的内外网配置
在分享anaconda 的安装配置及使用前,我们必须先明白anaconda是什么;Anaconda是一个开源的Python发行版本。两者区别在于前者是一门编程语言,后者相当于编程语言中的工具包。 由于python自身缺少numpy、matplotlib、scipy、scikit-learn等一系…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
