自动化办公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()

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

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

相关文章

单点11.2.0.3备份恢复到单点11.2.0.4

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…

设计模式(二)工厂模式

文章目录 工厂模式简介简单工厂&#xff08;Simple Factory&#xff09;结构具体实现优缺点 工厂方法&#xff08;Factory Method&#xff09;结构具体实现优缺点 抽象工厂&#xff08;Abstract Factory&#xff09;结构具体实现优缺点 工厂模式简介 工厂模式是一种创建型模式…

[数据集][目标检测]焊接处缺陷检测数据集VOC+YOLO格式3400张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3400 标注数量(xml文件个数)&#xff1a;3400 标注数量(txt文件个数)&#xff1a;3400 标注…

能源SCI期刊,中科院4区,审稿快,IF=3.858

一、期刊名称 Frontiers in Energy Research 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;能源 影响因子&#xff1a;3.858 中科院分区&#xff1a;4区 三、期刊征稿范围 能源研究前沿出版了整个领域的严格同行评审研究&#xff0c;重点是可持续和环境…

YOLOv8 深度详解!一文看懂,快速上手

YOLOv8 深度详解&#xff01;一文看懂&#xff0c;快速上手 原文&#xff1a;YOLOv8 深度详解&#xff01;一文看懂&#xff0c;快速上手 - 知乎 (zhihu.com) YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类…

Low Memory Killer in Android

目录 低内存管理&#xff08;Linux vs Android&#xff09; Linux内存回收 shrink_slab原理 shrink_zone原理 oom killer oom killer设计原则 OOM killer具体实现 android的lmk(Low Memory Killer) Android系统特点 oom killer在android中的不足 ​​​​​​​LMK概…

乡村振兴与农村环境整治:加强农村环境治理,改善农村人居环境,打造干净整洁、生态宜居的美丽乡村

目录 一、引言 二、农村环境整治的重要性 1、提升农民生活质量 2、促进农村经济发展 3、保护农村生态环境 三、当前农村环境面临的问题 1、垃圾处理不当 2、污水处理设施缺乏 3、农业面源污染严重 四、加强农村环境治理的措施 1、完善农村垃圾处理体系 2、加强农村…

2010-2015 年阿拉斯加北坡苔原植物功能类型连续覆盖图

ABoVE: Tundra Plant Functional Type Continuous-Cover, North Slope, Alaska, 2010-2015 2010-2015 年阿拉斯加北坡苔原植物功能类型连续覆盖图 简介 文件修订日期&#xff1a;2021-08-27 数据集版本: 1 摘要 该数据集以 30 米的分辨率提供了阿拉斯加北坡约 12.5 万平方…

CodeMirror 创建标签计算编辑器

在日常开发中对于一些数据计算场景可能会遇到标签计算的需求&#xff0c;下面关于如何使用CodeMirror实现标签计算编辑功能。 1&#xff0c;结果图 2&#xff0c;主体代码逻辑 大家只需要复制粘贴主要codeMirror使用逻辑即可 <template><el-dialogref"dialogRe…

7.2 Go 使用error类型

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

godot.bk

1.搜索godot国内镜像&#xff0c;直接安装&#xff0c;mono是csharp版本 2.直接解压&#xff0c;50m&#xff0c;无需安装&#xff0c;直接运行 3.godot里分为场景&#xff0c;节点 主场景用control场景&#xff0c;下面挂textureact放背景图片&#xff0c;右键实例化子场景把…

自然语言处理(NLP)—— 置信度(Confidence)

1. 置信度&#xff08;Confidence&#xff09;的概念 置信度&#xff08;Confidence&#xff09;在机器学习和统计中通常指一个模型对其做出的预测是正确的确信程度。在分类任务中&#xff0c;置信度通常由模型赋予特定类别的概率值来表示。例如&#xff0c;在文本分类或实体识…

外界访问docker服务失败

各位i大佬请问一下&#xff1a;我容器起了&#xff0c;但是外网访问不了目标机器的9090端口。 我检查了&#xff1a;1.本机的防火墙已关闭&#xff0c; 2.目标机器的9090端口显示正在被docker监听。 3.外网可以访问目标机器。 4.docker日志&#xff0c;未显示服务报错。 5…

07.与jenkins集成实现cicd

7.与jenkins集成实现ci/cd ip地址服务内存192.168.111.11kube-apiserver 80801G192.168.111.13k8s-node22G192.168.111.14jenkins(tomcat jdk) 8080 kubelet docker1G192.168.111.15gitlab 8080,80 docker2G 通过jenkins一键操作实现发布服务&#xff0c;jenkins对接k8s …

【前缀和】42. 接雨水

本文涉及知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&am…

【PPT】根据字体大小自动缩放文本框大小

【PPT】根据字体大小自动缩放文本框大小 一般我们新建文本框输入文字后&#xff0c;文本框的大小是不会自动缩放的&#xff0c;是根据你一开始拖动的尺寸固定的 你可以设置文本框的长度随着文字的变化而自动调整。这样&#xff0c;无论你输入多少文字&#xff0c;文本框都会自…

FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“3.4.3 把原始的H264文件封装为MP4格式”介绍了如何把H.264裸流封装为MP4文件。那么在网络上传输的H.264裸流是怎样被接收端获取视频格式的呢&#xff1f;前文指出H.264流必定以“SPS帧→PPS帧→IDR帧”开头&#x…

深入JVM:全面解析GC调优

文章目录 深入JVM&#xff1a;全面解析GC调优一、序言二、GC调优指标三、GC在线监控1、Jstat工具2、VisualVM工具 四、GC日志分析1、收集GC日志2、GCViewer工具3、GCeasy工具 五、GC问题调优1、调整JVM内存大小&#xff08;1&#xff09;调整堆内存大小及比例&#xff08;2&…

ChatGPT-4o 有何特别之处?

文章目录 多模态输入&#xff0c;多模态输出之前的模型和现在模型对比 大家已经知道&#xff0c;OpenAI 在 GPT-4 发布一年多后终于推出了一个新模型。它仍然是 GPT-4 的一个变体&#xff0c;但具有前所未见的多模态功能。 有趣的是&#xff0c;它包括实时视频处理等强大功能&…

疫情物资捐赠和分配系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;机构管理&#xff0c;用户管理&#xff0c;发放管理&#xff0c;物资管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;物资论坛&#xff0c;公告信息…