自动化办公01 smtplib 邮件⾃动发送

目录

一、准备需要发送邮件的邮箱账号

二、发送邮箱的基本步骤

1. 登录邮箱

2. 准备数据

3. 发送邮件

三、特殊内容的发送

1. 发送附件

2. 发送图片

3. 发送超文本内容

4.邮件模板内容


SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是⼀组⽤于由源地址到⽬的地址传送
邮件的规则,由它来控制信件的中转⽅式。
python的smtplib提供了⼀种很⽅便的途径发送电⼦邮件。它对smtp协议进⾏了简单的封装。

一、准备需要发送邮件的邮箱账号

如果是163邮箱只需要准备账号和密码;如果是QQ邮箱,需要准备账号和授权码(密码不好⽤),可以
去QQ邮箱官⽹的帮助中⼼去查看授权码的获取⽅式。

二、发送邮箱的基本步骤

1. 登录邮箱

2. 准备数据

数据指的需要发送的内容。邮件内容的构建需要涉及到另外⼀个库email,它可以⽤来构建邮件主
题以及各种形式的邮件内容(包括⽂字内容、图⽚内容、html内容、附件)等,这⼉先简单说⼀
个邮件主题和⽂本内容,其他形式的内容在后⾯邮件内容部分详细讲解。

3. 发送邮件

示例:

import smtplib
from email.mime.multipart import MIMEMultipart  # 邮件类
from email.header import Header                 # 主题类
from email.mime.text import MIMEText            # 邮件内容类# 1.连接邮箱服务器
# smtplib.SMTP_SSL(邮箱服务器地址, 端口号)
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)# 2.登录邮箱
# 连接对象.login(邮箱账号, 授权码)
connect.login('xxxxxxxxxx@qq.com', 'frcdoguixnbgiffd')# 3.发送邮件
# 1) 准备邮件内容
# a.创建邮件对象(点击写信按钮)
message = MIMEMultipart()# b.设置邮件主题
message['Subject'] = Header('第一份自动发送的邮件', 'utf-8').encode()# 设置收件人信息
message['To'] = 'xxxxxxxxxx@qq.com'# 设置发件人信息
# 注意尖括号前必须用英文
message['From'] = 'WMX<xxxxxxxxxx@qq.com>'# 设置正文内容
# MIMEText(正文内容, 正文类型, 编码方式)
# 正文类型:plain(普通文本)、html(超文本内容)、base64(文件-附件)
content = MIMEText('hello, handsome boy!', 'plain', 'utf-8')# 将邮件内容关联到邮件中
message.attach(content)# 2) 发送邮件
# connect.sendmail(发件人邮箱, 收件人邮箱, 邮件对象.as_string())
connect.sendmail('xxxxxxxxxx@qq.com', 'xxxxxxxxxx@qq.com', message.as_string())# 关闭连接
connect.close()

三、特殊内容的发送

1. 发送附件

 以附件的形式发送本地图⽚

发送附件 

 

示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText# 准备账号信息
sender = '726550822@qq.com'
to = 'y_t209@163.com'
pw = 'zaizvxadkftnbfda'# 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)# 登录邮箱
connect.login(sender, pw)# 创建一个空的邮件
message = MIMEMultipart()# 设置主题
message['Subject'] = Header('发送附件', 'utf-8').encode()# 设置收件人和发件人信息
message['To'] = to
message['From'] = f'YuTing <{sender}>'# ================================添加附件=======================================
# 1. 打开需要作为附件发送的文件,并读取文件内容
f1 = open('files/01-Excel快速入门(上).xlsx', 'rb').read()
f2 = open('files/im1.png', 'rb').read()
f3 = open('files/pyecharts的使用.pdf', 'rb').read()# 2. 创建附件
attachment1 = MIMEText(f1, 'base64', 'utf-8')               # 创建附件对象
attachment1['Content-Disposition'] = 'attachment; filename="Excel.xlsx"'    # 设置附件的显示位置和方式
message.attach(attachment1)                 # 将附件添加到邮件中attachment2 = MIMEText(f2, 'base64', 'utf-8')
attachment2['Content-Disposition'] = 'attachment; filename="im1.png"'
message.attach(attachment2)# =================================================================================
# 添加正文
# MIMEText(正文内容, 正文类型, 编码方式)
# 正文类型:plain(普通文本)、html(超文本内容)、base64(文件-附件)
text = MIMEText('相关内容请查看附件!', 'plain', 'utf-8')
message.attach(text)# 发送邮件
connect.sendmail(sender, to, message.as_string())# 关闭连接
connect.quit()

2. 发送图片

如果想要叫本地图⽚作为邮件中的内容,需要将图⽚以 <img src='cid:图⽚id'/> 的形式关联到
html⽂本中

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage# 准备账号信息
sender = 'xxxxxxxx@qq.com'
to = 'xxxxxx@163.com'
pw = 'zaizvxadkftnbfda'# 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)# 登录邮箱
connect.login(sender, pw)# 创建一个空的邮件
message = MIMEMultipart()# 设置主题
message['Subject'] = Header('发送图片', 'utf-8').encode()# 设置收件人和发件人信息
message['To'] = to
message['From'] = f'YuTing <{sender}>'# ========================在正文中发送图片================================
# ========第一步:准备图片=======
# 1. 打开图片文件,读文件内容(准备图片数据)
image_data = open('files/im1.png', 'rb').read()
# 2. 创建图片对象
image = MIMEImage(image_data)
# 3. 添加图片ID
image.add_header('Content-ID', '<img1>')
# 4. 将图片对象添加到邮件中
message.attach(image)# =======第二步:在正文中使用图片=======
# <img src="cid:图片ID">
# <br>  - 换行
text = MIMEText('尊敬的各位领导,您好!<br>请欣赏下面的图片:<br> <img src="cid:img1" style="width:300px;"> <br>谢谢大家!', 'html', 'utf-8')
message.attach(text)
# =============================================================================================
# 发送邮件
connect.sendmail(sender, to, message.as_string())# 关闭连接
connect.quit()

3. 发送超文本内容

HTML格式的邮件本质还是⽂本格式的邮件,所有⽂件的构建⽅式和普通⽂本⽂件的构建⽅式差不多:

示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage# 准备账号信息
sender = 'xxxxxxxxx@qq.com'
to = 'xxxxx@163.com'
pw = 'zaizvxadkftnbfda'# 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)# 登录邮箱
connect.login(sender, pw)# 创建一个空的邮件
message = MIMEMultipart()# 设置主题
message['Subject'] = Header('网上购票系统-用户支付通知', 'utf-8').encode()# 设置收件人和发件人信息
# 注意尖括号前必须用英文
message['To'] = to
message['From'] = f'12306@rails.com.cn <{sender}>'# ==========================发送超文本内容========================
# 1. 从html文件中读取网页内容
# 'rt' - 读、文本
html_content = open('files/12306.html', 'rt', encoding='utf-8').read()
# 2. 构建正文内容
text = MIMEText(html_content, 'html', 'utf-8')
message.attach(text)# ================================================================
# 发送邮件
connect.sendmail(sender, to, message.as_string())# 关闭连接
connect.quit()

4.邮件模板内容

可以实现准备一个模版,变动的用%s替代,然后代码编写正文的时候再填充

# 准备账号信息
sender = 'xxxxxxx@qq.com'
to = 'xxxxxxxx@163.com'
pw = 'zaizvxadkftnbfda'# 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)# 登录邮箱
connect.login(sender, pw)# 创建一个空的邮件
message = MIMEMultipart()# 设置主题
message['Subject'] = Header('网上购票系统-用户支付通知', 'utf-8').encode()# 设置收件人和发件人信息
message['To'] = to
message['From'] = f'12306@rails.com.cn <{sender}>'# ==============================================================
# name = input('请输入购票人姓名:')
# gender = input('请输入购票人性别(男/女):')
# date = input('请输入购票日期:')
# price = input('请输入购票金额:')# html_content = open('files/12307.html', 'rt', encoding='utf-8').read()
# text = MIMEText(html_content % (name, gender, date, price), 'html', 'utf-8')
# message.attach(text)
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~华~丽~丽~的~分~割~线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')text_content = open('files/邮件模版.txt', 'rt', encoding='utf-8').read()
text = MIMEText(text_content % ('xxxxxxxxxxxxxxxx'), 'plain', 'utf-8')
message.attach(text)# ================================================================
# 发送邮件
connect.sendmail(sender, to, message.as_string())# 关闭连接
connect.quit()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天气数据集-Jena Climate dataset

天气数据集-Jena Climate dataset 1.数据集基本信息 Dataset Name: mpi_saale_2021b.csv Size: 26495 rows; 1 year (2021), 10 min 气象学、农业、环境科学 开源机构: Max Planck Institute for Biogeochemistry 2.数据特征 2.1 特征简介 数据共有31个特征&#xff0c;…

使用 Scapy 库编写 Ping of Death 攻击脚本

一、介绍 1.1 概述 Ping of Death&#xff08;PoD&#xff09;攻击是一种历史悠久的拒绝服务&#xff08;DoS&#xff09;攻击&#xff0c;攻击者通过发送特制的畸形ICMP Echo请求数据包&#xff0c;导致目标系统无法正确处理&#xff0c;从而导致系统崩溃、重启或无法响应正…

【最新鸿蒙应用开发】——什么是状态管理?

状态管理 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&#xff0c;用户构建了一个UI模型&#xff0c;其中应用的运行时的状态是参数。当参数改变时&#xff0c;UI作为返回结果&#xff0c;也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&#xf…

【Postman接口测试】第四节.Postman接口测试项目实战(上)

文章目录 前言一、项目介绍 1.1 项目界面功能介绍 1.2 项目测试接口介绍 1.3 项目测试接口流程二、HTTP协议三、接口测试中接口规范四、项目合同新增业务介绍 4.0 接口测试用例设计流程 4.1 登录接口调试 4.2 登录接口自动关联 4.3 添加…

攻防世界---web---Web_php_unserialize

1、题目描述 2、 3、分析代码 class Demo { private $file fl4g.php; }&#xff1a;定义了一个名为Demo的类&#xff0c;该类有一个私有属性$file&#xff0c;默认值为fl4g.php。 $a serialize(new Demo);&#xff1a;创建了一个Demo类的实例&#xff0c;并对其进行序列化&a…

【机器学习】基于OpenCV和TensorFlow的MobileNetV2模型的物种识别与个体相似度分析

在计算机视觉领域&#xff0c;物种识别和图像相似度比较是两个重要的研究方向。本文通过结合深度学习和图像处理技术&#xff0c;基于OpenCV和TensorFlow的MobileNetV2的预训练模型模&#xff0c;实现物种识别和个体相似度分析。本文详细介绍该实验过程并提供相关代码。 一、名…

eNSP学习——VRRP基础配置

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、部署OSPF网络 3、配置VRRP协议 4、验证VRRP主备切换 主要命令 //创建备份组 [R2]int g0/0/1 [R2-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254 //修改优先级 …

自动评论自动私信引流系统,自动化时代的挑战与机遇

随着科技的飞速发展&#xff0c;自动化技术已经渗透到我们生活的方方面面。从工业生产线上的机械臂到家庭中的智能助手&#xff0c;自动化不仅改变了我们的工作方式&#xff0c;也在重塑着社会的面貌。然而&#xff0c;在享受自动化带来的便利和效率的同时&#xff0c;我们也必…

Java实现对PDF、纵向、横向页面添加自定义水印功能

Java实现对PDF、纵向、横向页面添加自定义水印 效果图 -- 纵向 页面PDF使用到JAR Maven依赖版本效果图 -- 横向页面PDF 效果图 – 纵向 页面PDF 代码如下&#xff1a; 使用到JAR Maven依赖版本 <dependency><groupId>org.apache.pdfbox</groupId><artifa…

FLINK-窗口算子

参考资料 官方文档- WindowFlink中的时间和窗口之窗口 窗口 在流处理中&#xff0c;我们往往需要面对的是连续不断、无休无止的无界流&#xff0c;不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来&#xff0c;就需要继…

【计算机毕设】SpringBoot校园资料分享平台的设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的校园资料分享平台&#xff0c;以满足学生在学习过程中对资料分享和获取的需求。具体目标包括&#xff1a…

ServletContext

一、ServletContext对象简介 ServletContext 是应用上下文对象。每一个应用中只有一个 ServletContext 对象, 这个ServletContext 对象被所有Servlet所共享. 在 Servlet 规范中&#xff0c;一共有 4 个域对象。ServletContext 就是其中的一个。它也是 web 应用中最大的作用域&a…

装饰器,状态管理和if判断(HarmonyOS学习第六课)

Builder装饰器-自定义构建函数 前面介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定&#xff0c;仅与使方法进行数据传递。ArkUI还提供了一种更轻量的UI 元素复用机制Builder&#xff0c;Builder 所装饰的函数遵循build( )函数语法规则&#xff0c;开发者可以将重…

飞书API(11):阿里云MaxCompute分区表入库

一、引入 前面入库阿里云 MaxCompute 的数据都是读取之后直接写入&#xff0c;保留数据最新的状态&#xff0c;如果我要保留历史的状态&#xff0c;怎么办呢&#xff1f;MaxCompute 表有一个分区功能&#xff0c;可以自行定义分区。我们可以使用 MaxCompute 表的分区功能&…

vue3-调用API实操-调用开源头像接口

文档部分 这边使用是开源的API 请求地址: &#xff1a;https://api.uomg.com/api/rand.avatar 返回格式 : json/images 请求方式: get/post 请求实例: https://api.uomg.com/api/rand.avatar?sort男&formatjson 请求参数 请求参数说明 名称必填类型说明sort否strin…

云原生架构案例分析_2.云原生技术助力某汽车公司数字化转型实践

名词解释&#xff1a; 互联网 在“互联网”模式下&#xff0c;我们仅仅把互联网看作是一种传播工具、传播手段、传播渠道和传播平台&#xff0c;对于互联网的应用大体上是在既有的运作逻辑的基础之上&#xff0c;把互联网作为延伸传媒影响力、价值和功能的一种延伸型工具&…

打造智能化未来:智能运维系统架构解析与应用实践

在数字化转型的大背景下&#xff0c;智能运维系统成为了企业提升效率、降低成本、增强安全性的关键利器。本文将深入探讨智能运维系统的技术架构&#xff0c;介绍其核心要素和应用实践&#xff0c;帮助读者全面了解智能运维系统的概念、优势和应用价值。 ### 1. 智能运维系统的…

【计算机毕设】基于SpringBoot的医院管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的医院管理系统&#xff0c;以提高医院管理效率&#xff0c;优化医疗服务流程&#xff0c;提升患者就诊体验…

软件定义汽车,通信连接世界 | 2024汽车软件与通信大会开幕

5月28日-30日&#xff0c;在江苏省工业和信息化厅、智能汽车安全技术全国重点实验室指导下&#xff0c;由中国中检所属中国汽车工程研究院股份有限公司&#xff08;下称&#xff1a;中国汽研&#xff09;主办&#xff0c;中汽院(江苏)汽车工程研究院有限公司承办的2024汽车软件…

学业辅导导师:文心一言智能体详细介绍和开发

一、前言 本期题目 开发方向&#xff1a;学习成长类 解读&#xff1a; AI技术在学习成长方向的应用正日益增多&#xff0c;本期赛题需围绕该方向开发智能体包括但不限于:作文辅导助手、个性化学习助手、考试助手、各垂类教育内容专家等 二、我的智能体&#xff1a;学业辅导…