成都建设监理协会网站网址,微网站建设代运营,erp系统页面,前潮网络网站建设文章目录 专栏导读案例说明一、smtplib模块是什么#xff1f;1.1 模块介绍1.2 SMTP参数说明1.3 SMTP常用方法 二、email模块是什么#xff1f;1.1 模块介绍1.2 常用类说明 三、案例实战3.1 获取授权码3.2 代码步骤3.3 发送文本格式邮件3.4 发送图片格式邮件3.5 发送指定文件夹… 文章目录 专栏导读案例说明一、smtplib模块是什么1.1 模块介绍1.2 SMTP参数说明1.3 SMTP常用方法 二、email模块是什么1.1 模块介绍1.2 常用类说明 三、案例实战3.1 获取授权码3.2 代码步骤3.3 发送文本格式邮件3.4 发送图片格式邮件3.5 发送指定文件夹下所有内容 专栏导读
本文已收录于《100天精通Python从入门到就业》本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学从0到100的不断进阶深入后续还有实战项目轻松应对面试专栏订阅地址https://blog.csdn.net/yuan2019035055/category_11466020.html
优点订阅限时9.9付费专栏进入千人全栈VIP答疑群作者优先解答机会代码指导、远程服务群里大佬众多可以抱团取暖大厂内推机会专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
案例说明
SMTP是一种用于发送电子邮件的协议Python从2.3版本开始内置了对SMTP的支持。Python的SMTP支持主要依赖于smtplib和email两个模块。其中email模块负责构建邮件内容包括邮件头部信息和正文部分而smtplib模块则负责发送邮件通过它我们可以连接到SMTP服务器并发送邮件。
本文以QQ邮箱为例介绍如何使用Python发送不同类型的邮件。
一、smtplib模块是什么
1.1 模块介绍 smtplib模块是Python标准库中的一个模块用于发送电子邮件。它提供了一个简单的接口可以用来连接到邮件服务器并发送电子邮件。通过smtplib模块你可以轻松地创建和发送包含文本或附件的电子邮件。smtplib模块的主要功能包括连接到邮件服务器、发送邮件、设置邮件主题、收件人、抄送、密送等信息。它还支持使用SMTP身份验证来发送邮件并可以处理各种邮件服务器的不同设置和要求。在使用smtplib模块发送邮件时你需要提供邮件服务器的地址、端口号以及可能的登录凭据等信息。一旦连接到邮件服务器你可以使用smtplib模块提供的方法来构建和发送邮件。 Python 3.x 版本中smtplib模块已经包含在标准库中无需额外安装你可以在Python脚本中直接导入smtplib模块并开始使用
import smtplib1.2 SMTP参数说明 SMTP类是Python的smtplib模块中的一个重要类它提供了与SMTP服务器进行交互的方法和功能。 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])参数说明 host: 可选参数表示SMTP服务器的主机名。如果未提供此参数将使用默认的本地主机名来连接 SMTP 服务器。 port: 可选参数表示SMTP服务器的端口号。如果未提供此参数将使用标准的 SMTP 端口号 25。 local_hostname: 可选参数用于标识客户端的主机名。通常情况下你不需要提供这个参数SMTP 类会尝试自动确定本地主机名。 timeout: 可选参数表示连接超时时间以秒为单位。如果未提供此参数将使用默认的超时时间。
这些参数用于初始化 SMTP 连接当你实例化 SMTP 对象时可以根据需要传递这些参数来连接到指定的 SMTP 服务器。
1.3 SMTP常用方法
下面是SMTP类的基本定义和一些常用方法
class SMTP:def __init__(self, host, port0, local_hostnameNone, timeoutNone, source_addressNone):初始化SMTP连接:param host: SMTP服务器的主机名:param port: SMTP服务器的端口号:param local_hostname: 本地主机名:param timeout: 连接超时时间:param source_address: 发送源地址def connect(self, hostlocalhost, port0):连接到SMTP服务器:param host: SMTP服务器的主机名:param port: SMTP服务器的端口号def starttls(self, keyfileNone, certfileNone, contextNone):将连接升级为TLS加密连接:param keyfile: 私钥文件:param certfile: 证书文件:param context: SSL上下文def login(self, user, password, initial_response_okTrue):登录到SMTP服务器:param user: 用户名:param password: 密码:param initial_response_ok: 初始响应是否OKdef sendmail(self, from_addr, to_addrs, msg, mail_options[], rcpt_options[]):发送邮件:param from_addr: 发件人地址:param to_addrs: 收件人地址列表:param msg: 邮件内容:param mail_options: 邮件选项:param rcpt_options: 接收选项def quit(self):退出SMTP会话以上是SMTP类的一些基本方法的定义。通过实例化SMTP类并调用这些方法你可以连接到SMTP服务器发送邮件登录到服务器将连接升级为TLS加密连接并退出SMTP会话等。这些方法为你提供了与SMTP服务器进行交互的基本功能使得你可以使用Python的smtplib模块来发送电子邮件。
二、email模块是什么
1.1 模块介绍
Python的email模块是用于处理电子邮件的标准库模块它提供了一系列的类和方法用于创建、解析、操作和发送电子邮件。通过email模块你可以轻松地构建各种类型的邮件包括纯文本邮件、HTML邮件、带附件的邮件等。
1.2 常用类说明
在Python中email模块提供了一些常用的类来处理邮件的构建和解析。以下是一些常用的类及其功能说明 email.message.Message类 用于表示邮件消息的基本类可以用来创建新的邮件消息或解析现有的邮件消息。可以通过添加头部信息、设置正文内容等来构建邮件消息。 email.mime.text.MIMEText类 用于表示文本类型的MIME邮件可以处理纯文本邮件的创建和解析。可以设置文本内容、字符集等属性。 email.mime.multipart.MIMEMultipart类 用于表示多部分邮件可以包含多个子类型的邮件体如文本、HTML、附件等。可以添加子类型的邮件体并设置邮件的头部信息。 email.mime.image.MIMEImage类 用于表示图像类型的MIME邮件可以处理图像类型的邮件。可以设置图像内容、图像类型等属性。 email.mime.audio.MIMEAudio类 用于表示音频类型的MIME邮件可以处理音频类型的邮件。可以设置音频内容、音频类型等属性。
这些类可以帮助我们在Python中构建和解析各种类型的邮件包括纯文本邮件、HTML邮件以及带附件的邮件。通过使用这些类我们可以更加灵活地处理邮件消息的构建和解析。
三、案例实战 这里咱们用QQ邮箱用做测试QQ邮箱需要先获取授权码其他邮箱貌似不需要 3.1 获取授权码
1、登录QQ邮箱的主界面 点击 设置
2、点击账号 3、往下翻找到并开启 POP3/SMTP 服务 和 IMAP/SMTP 服务
4、点击获取授权码获取后记得复制 3.2 代码步骤
代码步骤说明
1、 首先需要导入smtplib和email相关模块。2、 设置发件人邮箱和密码以及收件人邮箱。3、 创建邮件内容包括发件人、收件人、主题和正文。4、连接到SMTP服务器并使用starttls()方法启用TLS加密。5、使用login()方法进行邮箱登录。6、使用sendmail()方法发送邮件。7、 最后使用quit()方法关闭连接。
3.3 发送文本格式邮件
案例代码注意下面代码需要更改发件人邮箱、授权码和收件人邮箱
import smtplib # 导入smtplib模块
from email.message import EmailMessage # 从email.message模块导入EmailMessage类# 1、设置发件人邮箱和授权码
sender_email 发件人邮箱 # 发件人邮箱地址
sender_password 授权码 # 邮箱SMTP的授权码(看上文获取)# 2、设置收件人邮箱
recipient_email 收件人邮箱 # 这里我设置的收发人都是我自己# 3、创建邮件内容
message EmailMessage() # 创建EmailMessage对象
message[From] sender_email # 设置发件人
message[To] recipient_email # 设置收件人message[subject] Python发送邮箱测试标题信息 # 设置标题信息
body Python发送邮箱测试正文内容 # 正文内容
message.set_content(body) # 设置邮件正文内容# 4、连接到SMTP服务器
server smtplib.SMTP(smtp.qq.com, 25) # 使用QQ邮箱的SMTP服务器端口号为25
server.starttls() # 启用TLS加密
server.login(sender_email, sender_password) # 登录邮箱# 5、发送邮件
server.sendmail(sender_email, recipient_email, message.as_string())# 6、关闭连接
server.quit()运行结果我的邮箱收到了发送的邮件
3.4 发送图片格式邮件
案例代码注意下面代码需要更改发件人邮箱、授权码、收件人邮箱和图片路径如果不想要正文文字内容也可以注释掉
import smtplib # 导入smtplib模块
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import os# 1、设置发件人邮箱和授权码
sender_email 发件人邮箱 # 发件人邮箱地址
sender_password 授权码 # 邮箱SMTP的授权码(看上文获取)# 2、设置收件人邮箱
recipient_email 收件人邮箱 # 这里我设置的收发人都是我自己# 3、创建邮件内容
message MIMEMultipart() # 创建EmailMessage对象
message[From] sender_email # 设置发件人
message[To] recipient_email # 设置收件人message[subject] Python发送邮箱测试标题信息 # 设置标题信息
body MIMEText(Python发送美女图片) # 正文内容
message.attach(body) # 设置邮件正文内容# 添加图片附件
image_path 1.png # 图片文件路径
if os.path.exists(image_path):with open(image_path, rb) as image_file:image MIMEImage(image_file.read(), nameos.path.basename(image_path))message.attach(image)# 4、连接到SMTP服务器
server smtplib.SMTP(smtp.qq.com, 25) # 使用QQ邮箱的SMTP服务器端口号为25
server.starttls() # 启用TLS加密
server.login(sender_email, sender_password) # 登录邮箱# 5、发送邮件
server.sendmail(sender_email, recipient_email, message.as_string())# 6、关闭连接
server.quit()运行结果发送成功 3.5 发送指定文件夹下所有内容
下面是我准备的文件 案例代码注意下面代码需要更改发件人邮箱、授权码、收件人邮箱和文件夹路径如果不想要正文文字内容也可以注释掉
import smtplib # 导入smtplib模块
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import os# 1、设置发件人邮箱和授权码
sender_email 发件人邮箱 # 发件人邮箱地址
sender_password 授权码 # 邮箱SMTP的授权码(看上文获取)# 2、设置收件人邮箱
recipient_email 收件人邮箱 # 这里我设置的收发人都是我自己# 3、创建邮件内容
message MIMEMultipart() # 创建EmailMessage对象
message[From] sender_email # 设置发件人
message[To] recipient_email # 设置收件人message[subject] Python发送邮箱测试标题信息 # 设置标题信息
body MIMEText(Python发送指定文件夹下所有内容) # 正文内容
message.attach(body) # 设置邮件正文内容# 指定文件夹路径
folder_path rE:\Python3.10\测试文件夹 # 文件夹路径
# 遍历文件夹下所有文件
for filename in os.listdir(folder_path):file_path os.path.join(folder_path, filename)if os.path.isfile(file_path):attachment open(file_path, rb)# 添加附件part MIMEBase(application, octet-stream)part.set_payload(attachment.read())encoders.encode_base64(part)part.add_header(Content-Disposition, fattachment; filename {filename})message.attach(part)# 4、连接到SMTP服务器
server smtplib.SMTP(smtp.qq.com, 25) # 使用QQ邮箱的SMTP服务器端口号为25
server.starttls() # 启用TLS加密
server.login(sender_email, sender_password) # 登录邮箱# 5、发送邮件
server.sendmail(sender_email, recipient_email, message.as_string())# 6、关闭连接
server.quit()运行结果收到了指定文件夹下所有内容