当前位置: 首页 > news >正文

Python开发运维:Python3.7使用QQ邮箱发送不同类型邮件

目录

一、理论

1.邮件发送

二、实验

1.Python3.7使用QQ邮箱发送普通邮件

2.Python3.7使用QQ邮箱发送包含图片与附件的邮件

三、问题

1.Pycharm中如何放大和缩小代码界面


一、理论

1.邮件发送

(1)概念

        SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是⼀组⽤于由源地址到⽬的地址传送 邮件的规则,由它来控制信件的中转⽅式。

(2)实现

#实现发送邮件需经过以下⼏步:
1) 登录 邮件服务器
2) 构造符合邮件协议规则要求的邮件内容 (email模块)
3) 发送

(3)模块

Python对SMTP⽀持有 smtplib 和 email 两个模块, email 负责构造邮件, smtplib 负责发送邮件,它 对smtp协议进⾏了简单的封装。

①smtplib模块

1)smtplib模块负责发送邮件
2)smtplib模块还提供了SMTP_SSL类和LMTP类,对它们的操作与SMTP基本一致。host: SMTP服务器主机。 你可以指定主机的ip地址或者域名如: hellobi.com,这个是可选参数。port: 如果你提供了host参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为localhost即可。

email.utils模块

email.utils模块中提供了几个有用的方法:
1)email.utils.quote(str)
将str中的反斜杠替换为两个反斜杠的新字符串,并将双引号替换为反斜杠双引号。2)email.utils.unquote(str)
返回一个不带引号的str的新字符串。如果str结束并以双引号开头,则会被剥离。同样,如果str结束并以尖括号开始,它们将被剥离。3)email.utils.parseaddr(address)
解析地址 - 应该是某个包含地址的字段(例如“ 收件人”或“ 抄送”)的值,并将其解析为其真实姓名和 电子邮件地址部分。返回该信息的元组,除非解析失败,在这种情况下返回2元组。('', '')4)email.utils.formataddr(pair)
与此相反parseaddr(),这需要表单的2元组并返回适合于XX标题的字符串值。如果pair的第一个元素为false,则第二个元素将不加修改地返回。(realname, email_address),实际上,parseaddr(), formataddr(),两者互逆。5)email.utils.getaddresses(fieldvalues)
此方法返回由返回的表单的2元组列表parseaddr()。 fieldvalues是可能返回的一系列头字段值 Message.get_all。

email模块

email模块负责构造邮件:
1)类email.mime.text.MIMEText(_text),是使用字符串_text来生成MIME对象的主体文本。2)MIME是(Multipurpose Internet Mail Extensions) ,多用途互联网邮件扩展类型。3)MIME设置的目的是为了在发送电子邮件时附加多媒体数据,让邮件根据其类型进行处理。4)email.encoders ,编码器5)email.mime.multipart.MIMEMultipart(),是MIMEBase的一个子类,多个MIME对象的集合,MIME邮件中各种不同类型的内容是分段存储的,各个段的排列方式、位置信息都通过Content-Type域的multipart类型来定义。_subtype默认值为mixed,multipart类型主要有三种子类型:mixed、alternative、related。boundary是MIMEMultipart的边界,默认边界是可数的。6)email.mime.MIMEBase   ,发送pdf/jpg/png等格式7)email.mime.MIMEApplication , 发送txt/doc/csv/xls等plain格式

二、实验

1.Python3.7使用QQ邮箱发送普通邮件

(1)查看QQ邮箱服务(服务已关闭)

(2)绑定手机

(3)开启授权码

(4)再次查看服务(已开启)

(5)配置代码

# -*- coding: utf-8 -*-import smtplib
import email.utils#邮件正文
from email.mime.text import MIMEText#登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件⼈邮箱中的SMTP服务器,端⼝是25
smtp_obj.login("594372682@qq.com", "授权码") # 括号中对应的是发件⼈邮箱账号、邮箱密码
smtp_obj.set_debuglevel(True)
#smtp_obj.set_debuglevel(1) # 显示调试信息
# 设置邮件头信息
message = MIMEText("我是邮件的内容")
message["From"] = email.utils.formataddr(('发送者显示的姓名', '594372682@qq.com')) # 发送者
message["To"] = email.utils.formataddr(('接收者显示的姓名', '7jjw@163.com')) # 接收者
message["Subject"] = '我是邮件的标题' # 主题
# 发送
try:smtp_obj.sendmail("594372682@qq.com", ["7jjw@163.com"], msg=message.as_string())
finally:smtp_obj.quit()

(6)接收成功

(7)查看控制台信息

2.Python3.7使用QQ邮箱发送包含图片与附件的邮件

(1)配置代码

# -*- coding: utf-8 -*-import smtplib
import email.utils
from email import encoders
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBasemessage = MIMEMultipart()
message['To'] = email.utils.formataddr(('接收者显示的姓名', '7jjw@163.com'))
message['From'] = email.utils.formataddr(('发送者显示的姓名', '594372682@qq.com'))
message['Subject'] = '我是邮件的标题'# 需要发送的图片
img_file = open(r'1.jpg', 'rb')
img_data = img_file.read()
img_file.close()
img = MIMEImage(img_data)
message.attach(img)
img.add_header('Content-ID', 'dns_config')  # 给一个content Id供后面html内容引用
# 需要发送的文本
mail_content = """<html><body><p>我给你发送的图片</p><img src="cid:dns_config"></body></html>
"""
message.attach(MIMEText(mail_content, 'html', 'utf-8'))
# 需要发送的附件
txt_payload = MIMEBase("application", "octet-stream")
txt_payload.set_payload(open(r"test.txt", "rb").read())
txt_payload['Content-Type'] = 'application/octet-stream'
txt_payload['Content-Disposition'] = 'attachment; filename= "test.txt"'
encoders.encode_base64(txt_payload)
message.attach(txt_payload)smtp_obj = smtplib.SMTP_SSL('smtp.qq.com', 465)
smtp_obj.login('594372682@qq.com', '授权码')
smtp_obj.set_debuglevel(True)
try:smtp_obj.sendmail('594372682@qq.com', ['7jjw@163.com'], msg=message.as_string())
finally:smtp_obj.quit()

(2)接收成功

(3)查看控制台信息

三、问题

1.PyCharm中如何放大和缩小代码界面

(1)打开文件,点击设置

(2)选择“keymap”,右侧搜索框输入“increase”,搜索出来之后双击,选择“Add Mouse Shortcut”

(3)在操作框按住“Ctrl”并将鼠标滚轮上滑,完成设置,点击OK关闭界面

(4)选择“keymap”,右侧搜索框输入“decrease”,搜索出来之后双击,选“Add Mouse Shortcut”

(5) 在操作框按住“Ctrl”并将鼠标滚轮下滑,完成设置,点击OK关闭界面

相关文章:

Python开发运维:Python3.7使用QQ邮箱发送不同类型邮件

目录 一、理论 1.邮件发送 二、实验 1.Python3.7使用QQ邮箱发送普通邮件 2.Python3.7使用QQ邮箱发送包含图片与附件的邮件 三、问题 1.Pycharm中如何放大和缩小代码界面 一、理论 1.邮件发送 &#xff08;1&#xff09;概念 SMTP&#xff08;Simple Mail Transfer Pro…...

二十三种设计模式全面解析-解密迭代器模式:探索遍历之道

在软件开发中&#xff0c;遍历数据集合是一个非常常见的需求。但是&#xff0c;如何以一种优雅、灵活的方式遍历集合&#xff0c;并且能够适应各种不同的数据结构和迭代方式&#xff0c;一直是开发者们面临的挑战。今天&#xff0c;我将带你深入探索迭代器模式&#xff08;Iter…...

kubernetes istio

目录 一、部署 二、部署示例应用 三、部署遥测组件 四、流量管理 五、熔断 官网&#xff1a;https://istio.io/latest/zh/about/service-mesh/ 一、部署 提前准备好文件 tar zxf 15t10-1.19.3-linux-amd64.tar.gz cd 15t10-1.19.3/ export PATH$PWD/bin:$PATHistioctl install …...

25期代码随想录算法训练营第十四天 | 二叉树 | 递归遍历、迭代遍历

目录 递归遍历前序遍历中序遍历后序遍历 迭代遍历前序遍历中序遍历后序遍历 递归遍历 前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # …...

常用布局以及其优缺点

当涉及到设计和排版时&#xff0c;有许多不同的布局方式可供选择。以下是几种常见的布局方式以及它们的优缺点&#xff1a; 流式布局&#xff08;Fluid Layout&#xff09;&#xff1a; 优点&#xff1a;能够根据屏幕大小自动调整内容&#xff0c;适应不同设备。灵活性高&#…...

海康工业相机如何提高相机帧率

影响帧率的因素 相机参数 帧率限制使能 像素格式 曝光时间 数据包大小&#xff08;网口&#xff09; 相机默认参数 ADC位深 系统环境设置...

Linux之IPC通信共享内存(一次拷贝)与消息队列、管道、信号量、socket(两次拷贝)总结(六十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

【多线程 - 01、概述】

进程 几乎所有的操作系统都支持进程概念&#xff0c;进程是处于运行过程中的程序&#xff0c;进程是操作系统中进行资源分配的基本单位。 三个基本特征 独立性&#xff1a;指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。而对于未建立任何进程的程序&…...

SQL SELECT INTO 语句

SQL SELECT INTO 语句 使用 SQL&#xff0c;您可以将信息从一个表中复制到另一个表中。 SELECT INTO 语句从一个表中复制数据&#xff0c;然后将数据插入到另一个新表中。 SQL SELECT INTO 语法 我们可以把所有的列都复制到新表中&#xff1a; SELECT * INTO newtable [IN ex…...

【刷题】(AtCoder Beginner Contest 328) C、D 补题

前言 第一次打 a了两道 C、D都是TLE 看了其他人的题解之后 有一些想法 所以发一篇博客 C 题干 题目链接 我的思路及做题过程 我的思路是 输入left、right 再在这个区间内计算字母相同的对数 代码是&#xff1a; #include<iostream> #include<cmath> #includ…...

NI USRP软件无线设备的特点

NI USRP软件无线设备 NI的USRP(Universal Software Radio Peripheral)设备是RF应用中使用的软件无线(SDR)。NI的USRP收发器可以在多个频段发送和接收RF信号&#xff0c;因此可用于通信工程教育和研究。通过与LabVIEW开发环境相结合&#xff0c;USRP可以实现使用无线信号验证无…...

大数据毕业设计选题推荐-污水处理大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

最新获取支付宝cardIndex参数图文教程

本章教程主要介绍如何获取支付宝的cardIndex参数。 目录 一、登录到支付宝官网 二、在历史记录中,找到对应用户 一、登录到支付宝官网...

Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)

前言&#xff1a;在我的上一篇Linux博客我已经讲了基础指令和权限&#xff0c;现在我们来学习如何在Linux上运行和执行代码 目录 一&#xff0c;yum 二&#xff0c;vim 1&#xff09;命令行模式 2&#xff09;插入模式 3&#xff09;底行模式 三&#xff0c;gcc/g 四&a…...

自然语言处理(一):RNN

「循环神经网络」&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一个非常经典的面向序列的模型&#xff0c;可以对自然语言句子或是其他时序信号进行建模。进一步讲&#xff0c;它只有一个物理RNN单元&#xff0c;但是这个RNN单元可以按照时间步骤进行展开…...

超全总结!大模型算法面试指南(含答案)

大家好&#xff0c;从 2019 年的谷歌 T5 到 OpenAI GPT 系列&#xff0c;参数量爆炸的大模型不断涌现。可以说&#xff0c;LLMs 的研究在学界和业界都得到了很大的推进&#xff0c;尤其去年 11 月底对话大模型 ChatGPT 的出现更是引起了社会各界的广泛关注。 近些年&#xff0…...

前端使用C-lodop 实现循环套打小案例

目录 前言引入js文件小案例 前言 lodop是一个很优秀打印插件&#xff0c;具体的大家可以官网了解&#xff0c;先在官网下载插件&#xff0c;安装在本地&#xff0c;并启动&#xff0c;点击官网下载 引入js文件 //本JS是加载Lodop插件或Web打印服务CLodop/Lodop7的综合示例&a…...

基于SpringBoot+Vue+mysql卓越导师双选系统设计与实现

博主介绍&#xff1a;✌Csdn特邀作者、博客专家、博客云专家、B站程序阿龙带小白做毕设系列&#xff0c;项目讲解、B站粉丝排行榜前列、专注于Java技术领域和毕业项目实战✌ 系统说明简介&#xff1a; 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较…...

Windows 11系统cmd终端美化、Vscode终端美化

win11美化cmd终端和vscode的终端 1. 修改终端背景2. oh-my-posh2.1 安装oh-my-posh2.2 安装Clink2.3 Clink配置oh-my-posh2.4 下载和配置Nerd字体2.5 修改美化主题 3. vscode终端美化 电脑默认的终端没有语法高亮这些&#xff0c;运行命令和代码输出字体一样&#xff0c;有时会…...

[游戏中的图形学实时渲染技术] Part1 实时阴影技术

原理篇&#xff1a; 常见的渲染方程如下&#xff1a; 在不考虑自发光项与考虑阴影对于着色结果的影响之后可以将方程变化为如下形式&#xff1a; 如果射线在到达光源前击中了其他物体时&#xff0c;就认为这条来自光源的光线对着色点没有贡献。 利用上述渲染方程进行正确的着…...

SAM 3镜像免配置部署:支持ARM64架构,Jetson Orin Nano边缘设备实测

SAM 3镜像免配置部署&#xff1a;支持ARM64架构&#xff0c;Jetson Orin Nano边缘设备实测 1. 开篇&#xff1a;边缘AI的新选择 如果你正在寻找一个能在边缘设备上运行的图像分割模型&#xff0c;SAM 3绝对值得关注。这个由Facebook推出的统一基础模型&#xff0c;不仅支持图…...

单细胞分析实战:Seurat亚群整合与元数据操作避坑指南(附代码)

单细胞分析实战&#xff1a;Seurat亚群整合与元数据操作避坑指南&#xff08;附代码&#xff09; 实验室的单细胞转录组分析中&#xff0c;亚群整合与元数据操作是数据处理的"暗礁区"。许多研究者在此耗费大量时间排查问题&#xff0c;却往往忽略了一些关键细节。本文…...

python freezegun

## 聊聊 Python 里的 Mixer&#xff1a;一个不太起眼但很省事的工具 平时写代码&#xff0c;尤其是做测试或者快速搭建原型的时候&#xff0c;经常需要一堆假数据。比如用户的名字、邮箱、文章的标题和内容&#xff0c;或者订单的金额。自己手动编这些数据&#xff0c;写个循环…...

长尾分布不是数据问题,是模态对齐缺陷!:基于跨模态原型迁移(CPT)的零样本尾部泛化框架,已在LLaVA-NeXT部署验证

第一章&#xff1a;长尾分布不是数据问题&#xff0c;是模态对齐缺陷&#xff01; 2026奇点智能技术大会(https://ml-summit.org) 长尾分布常被误认为是训练数据采样不均或标注覆盖不足所致&#xff0c;但实证研究表明&#xff1a;即使在理想平衡数据集上微调多模态大模型&…...

2026年OpenClaw(Clawdbot)腾讯云/本地零基础部署、配置大模型Coding Plan及使用教程【教程】

2026年OpenClaw&#xff08;Clawdbot&#xff09;腾讯云/本地零基础部署、配置大模型Coding Plan及使用教程【教程】。本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c…...

太阳光模拟器:原理、用途与核心指标

在光伏研发、材料老化及光催化领域&#xff0c;太阳光模拟器是实验室复现标准阳光的核心设备。它解决了自然阳光不可控、不可重复的痛点&#xff0c;为科学测试提供稳定、可量化的光源环境。一、工作原理&#xff1a;三步复现标准阳光太阳光模拟器通过光学系统将人工光源整形为…...

优化Windows开发环境:迁移Yarn全局目录释放C盘空间

1. 为什么你的C盘总是不够用&#xff1f; 作为一个长期在Windows下搞开发的老鸟&#xff0c;我太懂那种看着C盘空间一点点被蚕食的痛苦了。特别是用了Yarn之后&#xff0c;你会发现不知不觉中C盘就红了。这其实是因为Yarn默认把所有全局安装的包、缓存文件都塞进了你的用户目录…...

百度文库助手:三步免费下载文库文档的终极指南

百度文库助手&#xff1a;三步免费下载文库文档的终极指南 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 还在为百度文库的下载限制而烦恼吗&#xff1f;无论是学生需要整理学习资料&#xff0c;…...

Minecraft Masa Mods 中文汉化包:解决中文玩家语言障碍的终极方案

Minecraft Masa Mods 中文汉化包&#xff1a;解决中文玩家语言障碍的终极方案 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 对于超过80%的中文Minecraft玩家来说&#xff0c;语言障碍…...

期刊论文写作 “开挂” 指南:Paperxie AI,从 0 到 1 搞定学术发表

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 科研人谁没为期刊论文熬过大夜&#xff1f;选题卡壳、结构混乱、语言不达标、投稿反复被拒…… 每一步都…...