用python发邮件、添加附件

2023-10-31

python 发邮件

  1. 两个内置模块:smtplib 、email

  2. 需要了解附件以什么形式添加到邮件中(open方法、二进制、字节)

  3. 什么是授权码

  4. 能够看懂邮件发送过程中的发送编码(发送成功、发送失败、垃圾邮件等编码编号)

  5. 什么是smtp协议:

    # SMTP协议,简单邮件传输协议。它是用于从源地址到目标地址的邮件传输规范,通过SMTP协议
    # 控制邮件中转的方式。SMTP协议属于TCP/IP协议簇,它可以帮助每台计算机在发送或中转信件
    # 的时候找到下一个地址。SMTP服务器就是遵循SMTP协议发送邮件的服务器。其中涉及到SMTP认证,
    # 此认证可以使垃圾邮件的发送者没有机会散播垃圾邮件,增加SMTP认证的目的就是为了使用户避免
    # 收到垃圾邮件的骚扰。
    

python发邮件代码

import smtplib
sendAddress='xxxxxxxxx@qq.com'
passWord='xxxxxxxxxxxxxxx' #进入扣扣空间-设置-账户-开启服务(POP3/SMTP服务、IMAP/SMTP服务)-发送短信,获取授权码
# #常用邮箱服务器: 发送邮箱端口都是465
# 新浪邮箱:smtp.sina.com
# 搜狐邮箱:smtp.sohu.com
# 126邮箱:smtp.126.com
# 163邮箱:smtp.163.com
# qq邮箱:smtp.qq.com
server=smtplib.SMTP_SSL('smtp.qq.com',465)
loginResult=server.login(sendAddress,passWord)
print(loginResult)  #(235, b'Authentication successful')表示登录成功

from email.mime.text import MIMEText
#MTMEText不能被用来构造信息。但是MIMEText不能添加附件
#构建邮件正文
content="""
邮件正文内容
"""
#将正文添加到邮件消息中
#plain:子内容的类型
#utf-8为Unicode编码
msg=MIMEText(content,'plain','utf-8')
#构造邮件的发件人、收件人等信息
#发件人
msg['From']='<xxxxxxxxx@qq.com>'
#收件人
msg['To']='<xxxxxxxxxxx@qq.com>;<xxxxxxxxx@qq.com>'
#抄送人
msg['Cc']='xxx'
#邮件主题
msg['Subject']='主题'
#发送邮件
To=['xxxxxxxxx@qq.com','xxxxxxxxxxx@qq.com']
#server.sendmail(发件人,收件人,发送信息)
#发送的信息:字符串类型的邮件,msg.as_string()
server.sendmail(sendAddress,To,msg.as_string())
print('发送成功')

python发邮件添加附件

import smtplib
#1发送人账号
sendAddress='xxxxxxxxx@qq.com'
#2发送人授权码,等同于密码
passWord='xxxxxxxxxxxx' #进入扣扣空间-设置-账户-开启服务(pop3/SMTP服务)-发送短信,获取授权码
#3连接服务器,465端口就是发送邮件的端口
server=smtplib.SMTP_SSL('smtp.qq.com',465)
#4登录
LoginResult=server.Login(sendAddress,passWord)
#(235, b'Authentication successful')代表成功
#添加附件
from email.mime.text import MIMEText
#使用MIMEMUltipart添加附件
from email.mime.multipart import MIMEMultipart
msg=MIMEMultipart()
#构建发件人、收件人、邮件主题
msg['From']='<xxxxxxxxxx@qq.com>'
msg['To']=''
msg['subject']='主题'
content="""
尊敬的各位先生女士:
您好!
	感谢您乘坐本次列车,期待您下次体验。
"""
#添加正文
#将附件使用二进制读取,在使用MIMEText方法进行规范化
attachment_1=MIMEText(open('1.jpg','rb').read(),'base64','utf-8')
attachment_1['content-Type']='application/octet-stream'
attachment_1['content-Disposition']='attachment;filename="1.jpg"'
msg.attach(attachment_1)

attachment_2=MIMEText(open('2.jpg','rb').read(),'base64','utf-8')
attachment_2['content-Type']='application/octet-stream'
attachment_2['content-Disposition']='attachment;filename="2.jpg"'
msg.attach(attachment_2)
#1.jpg   2.jpg 为保存在项目里的图片

#发送邮件
To=['xxxxxxxxxx@qq.com']
server.sendmail(sendAddress,To,msg.as_string())
print('发送成功')

补充内容

#1 计算机中的数据以什么形式存在
# 二进制
#2 字节和二进制的关系
# 1字节=8位二进制数

#3 open方法
# # open(文件,模式,编码方式)
# 参数一:文件就是本地的一个文件,可以用open打开
# 参数二:模式:
# 按照文件打开方式r w a
# t(文本类型) b(字节类型)
# rt rb tr br wt wb
#万国码兼容中文

#(静夜思.txt文件存在当前操作的项目里的文件)

# 以文本只读模式打开
file=open('静夜思.txt','rt',encoding='utf-8')
#将文件中的内容读出
result=file.read()
print(result)
#关闭打开的文件
file.close()
# 再次打开文件
# 以字节只读模式打开文件
file1=open('静夜思.txt','rb')
result1=file1.read()
print(result1)
file1.close()


#邮件发送过程中添加的附件需要以二进制的形式进行发送
#即附件要以二进制形式读取,然后进行邮件构造,发送到收件方,再转换回原来的样子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用python发邮件、添加附件 的相关文章

  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写 测试用例 时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计 测试数据 通
  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • messages,CentOS 7不收集日志或不存在 /var/log/messages

    var log message var log secure等都不记录了 并且都是空文件 重启机器 reboot 无效 重启日志 systemctl start rsyslog 无效 怀疑空间不足 删除 var log messages 重
  • 【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • Kubernetes (十一) 存储——Secret配置管理

    一 简介 从文件创建 echo n admin gt username txt echo n westos gt password txt kubectl create secret generic db user pass from fi
  • 服务器VPS是什么意思?一文了解其含义与重要性

    在今天的数字时代 服务器扮演着至关重要的角色 它们是网站 应用程序和在线业务的基石 但是 你是否听说过VPS 本文将深入探讨什么是服务器VPS 以及为什么它在今天的互联网世界中如此重要 什么是服务器VPS 服务器的基本概念 在我们深入探讨V
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方

随机推荐

  • 【零基础学QT】第一章 QT安装与工程创建

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • 详解数据库基本概念

    数据库 DataBase 简称 DB 是一个长期存储在计算机内的 有组织的 可共享的 统一管理的大量数据的集合 数据库管理系统 DataBase Management System 简称 DBMS 是一种操纵和管理数据库的大型软件 用于建立
  • C#基础详解

    Excerpt C 是微软公司发布的一种面向对象的 运行于 NET Framework和 NET Core 完全开源 跨平台 之上的高级程序设计语言 C 是一种安全的 稳定的 简单的 优雅的 由C和C 衍生出来的面向对象的编程语言 它在继承
  • 使用 Python 实现斐波那契数列

    介绍 斐波那契数列是一个非常经典的数列 其前两项为 1 从第三项开始 每一项都等于前两项之和 这个数列很有意思 因为它的每一项都是前两项的和 而且越往后 数列中的数字就越大 以至于数列中的第 100 项就是黄金分割比例的倒数 斐波那契数列的
  • 关键词共现分析_结巴分词5--关键词抽取

    1 简介 关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来 这个可以追溯到文献检索初期 当时还不支持全文搜索的时候 关键词就可以作为搜索这篇论文的词语 因此 目前依然可以在论文中看到关键词这一项 除了这些 关键词还可以在文本聚
  • 三分钟教你如何写代码,构建自己的“思维帝国”

    很多人都在抱怨科技行业的知识更新的太快 他们疯狂的追逐新技术 当掌握一门新技术后突然发现 又有更新的技术来了 于是就想逃离这个行业 逃离这些不堪重负的压力 互联网的世界使用代码构建起来的 从事互联网行业就免不了时刻与代码交流 但是 技术永远
  • linux查看端口对应的应用

    根据端口查看对应进程 lsof i 端口 根据进程号PID查看对应应用 ps axu grep 进程号 根据进程号PID查看对应端口 netstat anp grep 进程号
  • 配置maven指定的JDK版本

    配置maven指定的JDK版本 第一种 最省事 在我们安装maven环境的conf目录下修改settings xml文件 如下 在profiles中加入以下配置
  • debian终端tab键无法补全命令,apt install 无法补全

    debian终端无法补全命令 输入apt i 按tab键无法补全install 这很不方便 解决方法 1 安装bash completion 包 2 编辑 etc bash bashrc 3 编辑 etc profile 4 重新登录系统即
  • Mysql和Oracle的语法区别?

    Mysql和Oracle是两种不同的关系型数据库 MySQL通常在中小型应用程序 Web应用程序和小型企业中广泛使用 因为它易于学习和部署 而且成本较低 Oracle数据库通常用于大型企业和复杂的企业级应用程序 因为它提供了高度可扩展性 高
  • DDL数据定义语言

    文章目录 DDL Data Definition Language 数据定义语言 数据库的管理 表的管理 表的创建 表的删除 表的复制 表的修改 DDL Data Definition Language 数据定义语言 DDL其实是Data
  • epoll用法详解与编程实例

    1 epoll使用的三个函数 使用epoll时会用到三个函数 因此把这个三个函数弄明白了 也就明白了epoll的用法 要明白这个三个函数 最重要的就是要明白函数的参数 明白需要什么样的参数以及每一个参数的含义 1 1 epoll creat
  • 你知道花卉识别软件有哪些吗

    随着智能手机的普及 人们的生活越来越离不开这些便捷的小工具 而其中一种常见的应用就是花卉识别软件 花卉识别软件可以通过拍照 上传照片等方式 快速准确地识别出花卉的品种 方便人们了解花卉的名称 特点等信息 你知道花卉识别软件有哪些吗 软件一
  • 数据分析利器:pandas库的奥秘与代码示例

    pandas是Python中一款强大的数据分析库 它提供了数据清洗 数据操作 数据可视化等功能 使得数据分析与处理变得更加高效和便捷 本文将从基本概念 基础知识 高级特性 实战案例和总结五个方面 深入介绍pandas库的用法和技巧 一 基本
  • 用Power BI来进行移动网络质量可视化分析

    如果我们有一些按照时间顺序发生的无线网络测量数据 每个测量数据有一个对应的坐标点 那么我们如何利用Power BI来进行可视化分析呢 这里记录一下我的作法 我的原始数据如下 Datetime Latitude Longitude CellI
  • 【vue3】:全局搜索解决方案

    全局搜索解决方案 需求 用户通过搜索框进行全局搜索 与当前系统路由进行匹配 用户点击匹配结果 可以跳转到该路径下的页面 原理 根据用户输入内容在数据源中进行 模糊搜索 获取数据源 根据匹配结果 将其渲染到下拉框组件中 点击下拉框选项 跳转到
  • ant-design:Upload组件上传图片组件封装

    将Upload组件放入src components下成为全局组件 调用时通过子组件向父组件传值实现的 这里的子组件为全局组件下的Upload上传组件 父组件指的是调用时的路由组件 上传图片一般为是为了得到上传到服务器后的图片路径 具体配置如
  • React:阻止组件渲染

    使用return null ReactDOM render
  • Vue elementui中el-select获取选中label的值

    针对控件el select中的option一个是label一个是value 在控件中change方法或者v model我们只能拿到value 下面是获取到label的方法
  • 用python发邮件、添加附件

    python 发邮件 两个内置模块 smtplib email 需要了解附件以什么形式添加到邮件中 open方法 二进制 字节 什么是授权码 能够看懂邮件发送过程中的发送编码 发送成功 发送失败 垃圾邮件等编码编号 什么是smtp协议 SM