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 MIMEBase

message = 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关闭界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/132795.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux AMH 服务器管理面板远程访问

文章目录 1. 前言2. Linux 安装AMH 面板3. 本地访问AMH 面板4. Linux安装Cpolar5. 配置AMH面板公网地址6. 远程访问AMH面板7. 固定AMH面板公网地址8、结语 1. 前言 AMH 是一款基于 Linux 系统的服务器管理面板&#xff0c;它提供了一系列的功能&#xff0c;包括网站管理、FTP …

Linux-用户与用户组,权限

1.用户组管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户组 groupadd 用户组名 ②删除用户组 groupdel 用户组名 2.用户管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户 useradd [-g -d] 用户名 >-g&#xff1a;指定用户的组&#xff0c;不…

颠覆人工智能计算硬件的新计算技术

颠覆人工智能计算硬件的新计算技术 图纸解释说明参考网址加法器模拟解析图纸 解释说明 简单的介绍 使用一个小的llm 模拟 计算最小单元加法器 等硬件 在使用 简单的 电阻矩阵模拟矩阵计算 固化llm 参数代替 半导体硬件 而后组成 大规模人工智能计算 参考网址 加法器 但是直接…

TCP与UDP

文章目录 TCP与UDP传输层的作用端口号UDPTCPUDP首部的格式TCP首部格式 TCP与UDP TCP/IP中有两个具有代表性的传输层协议&#xff0c;它们分别是TCP和UDP。TCP提供可靠的通信传输&#xff0c;而UDP则常被用于让广播和细节控制交给应用的通信传输。总之&#xff0c;根据通信的具…

win10使用mingw安装OpenCV4.8

1. cmake安装 下载链接如下https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip 解压后放到指定目录后&#xff0c;添加bin目录到环境变量即可。 2. mingw安装 下载链接如下(下图的x86_64-posix-sjlj)&#xff1a; Download x86_…

mybatis的简单教程

整体就是mysql里存了一张表&#xff0c;然后在java程序里用mybatis把数据读出来的一个简单示例。 库 blog里有一张表 article 整个项目就是增加了这3个文件 首先是mybatis-config.xml文件 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE c…

【操作系统内核】线程

【操作系统内核】线程 为什么需要线程 比如我要做一个视频播放器&#xff0c;就需要实现三个功能&#xff1a; ① 从磁盘读取视频数据 ② 对读取到的视频数据进行解码 ③ 对解码的数据进行播放 如果串行执行&#xff08;通过一个进程来执行&#xff09;&#xff1a; 那么…

【MySQL】rank()、row_number()、dense_rank()用法详解

建表测试 测试表数据&#xff1a;test1 CREATE DATABASE /*!32312 IF NOT EXISTS*/db_test /*!40100 DEFAULT CHARACTER SET utf8 */; USE db_test; /*Table structure for table test1 */ DROP TABLE IF EXISTS test1; CREATE TABLE test1 ( id int(10) NOT NULL, score i…

数据结构从未如此简单——图(一)

文章目录 前言图的初印象教科书力扣工作中的实际应用我们的学习方法 前言 个人感觉数据结构学习最大的难点就是抽象。这些概念和算法都是从许多源问题中抽离、精炼、总结出来的。我们学习的看似是最精华的部分&#xff0c;但是忽略了推导过程&#xff0c;很容易变成死记硬背&a…

C语言求解有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

完整代码&#xff1a; /*有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月 又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; 程序分析&#xff1a; 兔子的规律为数列1,1,2,3,5,8…

MySQL中的json使用注意

MySQL中json是一种重要的数据类型 好的点在于其不必事先定义列得名称啥的 不过不要将明显的关系型数据作为json来存储&#xff0c;例如用户余额、姓名、身份证等&#xff0c;这些是用户必须包含的数据 json适合存储的是给每个用户&#xff08;或者物品&#xff09;打的标签&…

超简单的Linux FTP服务搭建教程

目录 前言1、检查vsftp是否已安装2、安装vsftpd3、启动ftp服务4、测试ftp服务5、上传文件配置总结 前言 本文记录了在Kylin Linux Desktop V10(SP1)系统上搭建FTP服务的过程。FTP是File Transfer Protocol的缩写&#xff0c;译为文件传输协议&#xff0c;是用于在网络上进行文…

docker复制镜像文件

一、复制镜像 #1. 查找本机已有的镜像docker images |grep xxxx#2. 将镜像复制出来指向到xxxx.tar的文件中 docker save 343cca04e31d > xxxx.tareg: 二、加载镜像 直接将拷贝好的镜像包直接加载即可 docker load < myimage.tar

NO.304 二维区域和检索 - 矩阵不可变

题目 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, col1) &#xff0c;右下角 为 (row2, col2) 。 实现 NumMatrix 类&#xff1a; NumMatrix(int[][] matrix) 给定整数矩阵 …

组成原理备考学习 day2 (2.1)

组成原理备考学习 day2 第二章 数据的表示和运算2.1 数制和编码2.1.1 进位计数法进制转换BCD码 2.1.4 字符2.1.5 校验原理2.1.6 海明校验码2.1.7 循环冗余校验码 第二章 数据的表示和运算 2.1 数制和编码 2.1.1 进位计数法 进制转换 16进制的字母为H BCD码 2.1.4 字符 2.…

基于CST的电磁感应透明设计与机制研究

前言 电磁感应透明&#xff08;EIT&#xff09;最早在量子力学中提出&#xff0c;但是量子系统实验条件十分苛刻且费用较高&#xff0c;超材料的出现对电磁感应透明的研究提供了一种新的方法。利用超材料单元结构设计灵活&#xff0c;通过排列不同结构可以实现操控电磁波而且能…

Arduino到底适不适合做产品

文章目录 一、Arduino性能很低&#xff0c;不如树莓派等开发板&#xff0c;所以不要用Arduino做开发二、Arduino程序效率很低&#xff0c;所以不要用Arduino做开发三、Arduino只能开发玩具&#xff0c;不能做产品四、Arduino开发板成本太高&#xff0c;不适合做产品总结个人见解…

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解前言GoogLeNet(InceptionV2)讲解Batch Normalization公式InceptionV2结构InceptionV2特殊结构GoogLeNet(I…

[量化投资-学习笔记011]Python+TDengine从零开始搭建量化分析平台-MACD金死叉策略回测

在上一章节 MACD金死叉中结束了如何根据 MACD 金死叉计算交易信号。 目录 脚本说明文档&#xff08;DevChat 生成&#xff09;MACD 分析脚本安装依赖库参数配置查询与解析数据计算 MACD 指标判断金叉和死叉计算收益绘制图形运行脚本 本次将根据交易信号&#xff0c;模拟交易。更…

《数字图像处理-OpenCV/Python》连载(41)图像的旋转

《数字图像处理-OpenCV/Python》连载&#xff08;41&#xff09;图像的旋转 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 6 章 图像的几何变换 几何变换分…
最新文章