【python】如何通过python来发邮件,各种发邮件方式详细解析

这篇具有很好参考价值的文章主要介绍了【python】如何通过python来发邮件,各种发邮件方式详细解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建等分享。

所属的专栏:python基础语法,高阶实战应用教学

景天的主页:景天科技苑

Python 发送邮件

在日常工作中,我们可能经常会用到发送邮件,但如果每次都人工来发送,那岂不是很麻烦,今天我们就来讲解下如何通过python语言来优雅地发送邮件

1.发送普通邮件

1 需要有一个发送邮件的邮箱

  • 163,126,qq…
  • 今天咱们是以 qq 邮箱为例,其它大家自行尝试,都基本类似

2 申请开启发送邮件

  • 生成一个秘钥:x**************ic # 很重要,不要泄露

3 写python代码,实现发送邮件(smtp模块–》python内置)

  • 就使用我们的账号:31*******35@qq.com

以QQ邮箱为例,开启授权码图解,登录邮箱,点击设置
【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

往下拉,找到pop3那一串,点击开启
【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

点击管理服务,在弹出的页面生成授权码
【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

点击生成授权码,然后需要扫码发短信同意授权,会生成一串字符串

4.发送邮件api详解

在Python3中,使用mimetext模块可以轻松地创建电子邮件消息。在发送电子邮件时,我们需要设置邮件的主题、收件人、发件人、正文和附件等信息。
而mimetext模块就是用来处理邮件中的文本和附件的。本文将详细介绍mimetext模块中的参数及其用法。

发邮件常见的几个类介绍

1.MIMEText类
MIMEText类用来创建邮件的正文,它有三个参数:

_text:邮件正文内容,可以是纯文本或HTML格式。

_subtype:邮件正文内容的类型,可以是"plain"(纯文本)、“html”(HTML格式)。

_charset:邮件正文内容的编码方式,常用的有"utf-8"、"gbk"等。

常见用法如下:

from email.mime.text import MIMEText

# ----------方法1
msg = MIMEText('测试邮件。收到请不用回复', 'plain', 'utf-8')

# -----------方法2
content = '''
 <p>我的地址:</p>
 <p><a href='http://hldaig.xyz/'>点击进入我的</a></p>
 <p>我的公众号二维码:</p>
 <p><img src="cid:image"></p>
 '''
html = MIMEText(content, 'html', 'utf-8')

2.MIMEImage类
MIMEImage类用来创建邮件中的图片,它有两个参数:

_imagedata:图片的二进制数据。

_subtype:图片的类型,可以是"jpeg"、“gif”、"png"等。

代码示例

from email.mime.image import MIMEImage
#-----------方法1
with open('test.jpeg', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'jpeg')
# ----------方法2
with open('test.gif', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'gif')
# ---------方法3
with open('test.png', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'png')

3.MIMEAudio类
MIMEAudio类用来创建邮件中的音频文件,它有两个参数:

_audiodata:音频文件的二进制数据。

_subtype:音频文件的类型,可以是"mp3"、"wav"等。

代码示例

from email.mime.audio import MIMEAudio

with open('test.mp3', 'rb') as f:

    audio_data = f.read()

msg = MIMEAudio(audio_data, 'mp3')

4.MIMEBase类
MIMEBase类是所有MIME类型的基类,它有四个参数:

_maintype:MIME类型的大类,常见的有"text"、“image”、“audio”、“video”、"application"等。

_subtype:MIME类型的子类,如"text/plain"、“image/jpeg”、"audio/mp3"等。

_encoder:编码方式,可以是"base64"、"quoted-printable"等。

_payload:MIME类型的内容,可以是文本、图片、音频、视频等。

代码示例:

from email.mime.base import MIMEBase

with open('test.pdf', 'rb') as f:

    pdf_data = f.read()

msg = MIMEBase('application', 'octet-stream')

msg.set_payload(pdf_data)

5.发送普通邮件完整代码

# 1 导入模块
import smtplib
from email.mime.text import MIMEText  #往邮件中写内容的对象

from email.utils import formataddr #发件人信息


# 2 发送方和接收方配置
# 发件方邮箱:谁发送的
msg_from='3*****2@qq.com'
# 生成的授权码:不能泄露
password='h******ifj'
# # 发送给谁,可以写多个人,以列表形式存储
msg_to=['li*****91@126.com','18*******68@139.com']
# 邮件主题
subject = "给领导问好"  # 主题
content = "领导早上好,领导辛苦了" #邮件内容
# 生成一个MIMEText对象(还有一些其它参数)
msg = MIMEText(content)
# 放入邮件主题
msg['Subject'] = subject
# 放入发件人,元祖中内容第一个是发件人名称,第二个是发件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,将收件人转化为以逗号分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通过ssl方式发送,服务器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登录到邮箱
    s.login(msg_from, password)
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二个参数可以以列表的方式写多个
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否发送成功,都退出服务
    s.quit()

登录邮箱查看,发送成功
【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

2.发送html格式邮件

# 1 导入模块
import smtplib
from email.mime.text import MIMEText  #往邮件中写内容的对象

from email.utils import formataddr #发件人信息


# 2 发送方和接收方配置
# 发件方邮箱:谁发送的
msg_from='3******72@qq.com'
# 生成的授权码:不能泄露
password='h*********ifj'
# # 发送给谁,可以写多个人,以列表形式存储
msg_to=['li*******1@126.com','1**********8@139.com']
# 邮件主题
subject = "非常重要,中了五百万"  # 主题


# 构建html标签
content = '''
<h1>恭喜您中奖了</h1>
<p><a href="https://www.baidu.com">点我兑换奖品</a></p>
'''


# 生成一个MIMEText对象(发送html格式邮件)
msg = MIMEText(content,'html','utf-8')
# 放入邮件主题
msg['Subject'] = subject
# 放入发件人,元祖中内容第一个是发件人名称,第二个是发件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,将收件人转化为以逗号分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通过ssl方式发送,服务器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登录到邮箱
    s.login(msg_from, password)
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二个参数可以以列表的方式写多个
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否发送成功,都退出服务
    s.quit()

邮箱查看,发送成功
【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

3 发送带附件邮件

添加附件时需要使用MIMEMultipart类,它有一个attach()方法可以添加邮件中的附件。用smtplib模块发送示例代码:

# 1 导入模块
import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText  #往邮件中写内容的对象

from email.utils import formataddr #发件人信息

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase


from email import encoders


# 2 发送方和接收方配置
# 发件方邮箱:谁发送的
msg_from='3*******2@qq.com'
# 生成的授权码:不能泄露
password='h**********fj'
# # 发送给谁,可以写多个人,以列表形式存储
msg_to=['li*********1@126.com','1*********8@139.com','3*********2@qq.com']
# 邮件主题
subject = "老板,这是今日日报,请查收"  # 主题


# 创建一个带附件的实例
msg = MIMEMultipart()

# 放入邮件主题
msg['Subject'] = subject
# 放入发件人,元祖中内容第一个是发件人名称,第二个是发件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,将收件人转化为以逗号分隔的字符串
msg['to'] = ','.join(msg_to)


# 邮件正文内容
msg.attach(MIMEText('今日日报:1 xxx', 'plain', 'utf-8'))


# 添加附件1
# 构造附件1,传送当前目录下的 ribao.txt 文件,注意文件要以rb的形式读取
file = open('ribao.txt', 'rb').read()
att1 = MIMEText(file, 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'

# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1.add_header('Content-Disposition', 'attachment', filename="日报.txt")
msg.attach(att1)




# 添加附件2--图片
with open('gzh.png', 'rb') as f:
    # 设置附件的MIME和文件名,这里是png类型:
    mime = MIMEBase('image', 'png', filename='gzh.png')
    # 加上必要的头信息:
    mime.add_header('Content-Disposition', 'attachment', filename='gzh.png')
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的内容读进来:
    mime.set_payload(f.read())
    # 用Base64编码:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)


# 构造附件3,图片格式
fp = open('对称加密.png', 'rb')
msgImage = MIMEImage(fp.read(),'png')
fp.close()

# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
msgImage.add_header('Content-Disposition', 'attachment', filename="对称加密.png")
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
msg.attach(msgImage)



try:
    # 通过ssl方式发送,服务器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登录到邮箱
    s.login(msg_from, password)
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二个参数可以以列表的方式写多个
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否发送成功,都退出服务
    s.quit()

【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

查看邮件中,已包含附件

【python】如何通过python来发邮件,各种发邮件方式详细解析,python基础语法,高阶实战应用教学,python,开发语言,python发邮件,发邮件,smtplib

4.总结

综上,就是我们通过python来发送邮件的常用方法的详细流程,我们也可以结合linux定时任务,或者celery来实现定时发送,也不难。上述代码在使用时可以直接拿去用,只需要改下自己邮箱的参数即可,是不是很方便,喜欢的朋友一键三连,python常规用法持续更新中!!!文章来源地址https://www.toymoban.com/news/detail-855820.html

到了这里,关于【python】如何通过python来发邮件,各种发邮件方式详细解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】flask各种版本的项目,终端命令运行方式的实现

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月27日
    浏览(40)
  • Python 编程如何自动化读取邮件?

    Python可以使用标准库中的imaplib模块来实现自动读取邮件。imaplib模块提供了IMAP协议的客户端访问接口,可以用来连接到邮箱服务器,读取邮件信息,并进行相应的处理。 下面是一个简单的示例代码,演示如何使用Python自动化读取邮件: 在这个示例中,我们使用IMAP协议连接到

    2024年02月14日
    浏览(35)
  • python 邮箱自动化操作(1) 邮件的自动获取 imapclient 非常详细!有范例!!

    python 3.8 imapclient:3.0.0  注意: 这里是以腾讯企业邮箱为例,不同的邮箱可能会有不同的编码格式,就可能会产生错误。 SMTP (Simple Mail Transfer Protocol) : SMTP 是用于发送电子邮件的标准协议。 客户端使用 SMTP 将邮件发送到邮件服务器。 SMTP 客户端连接到 SMTP 服务器的 25 号端口

    2024年04月22日
    浏览(33)
  • 全网最详细的Python自动化测试+邮件推送+企业微信推送+Jenkins

    什么是python自动化?我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提。测试工作很多时候就是在不断平衡质量、

    2024年02月03日
    浏览(38)
  • CSS三大定位方式(浮动、定位、弹性盒)详细解析

    前言:作为一名前端开发,已经工作2年了。由于自己是半路出家,从嵌入式方向转到前端开发,都是边百度边开发,很多基础都不了解,只要解决问题就好,但是近来为了让自己知识体系化,也是为了让自己走的更远,所以写此文来系统学习一下css中的三大定位方式(浮动、

    2024年02月21日
    浏览(55)
  • 【Python】解决pywin32各种常见问题及中英文手册下载(详细)

    目录 前言 一、中英文手册获取 二、各种常见问题 1. ModuleNotFoundError: No module named \\\'win32xxx\\\' 2. ImportError:DLL load failed while importing win32xxx: 找不到指定的模块。 方法一 方法二 方法三 3. pywintypes.error: (2, \\\'XXX\\\', \\\'系统找不到指定的文件。\\\') 总结 pywin32是针对微软Windows的Python扩展,p

    2024年02月07日
    浏览(39)
  • python如何安装各种库(保姆级教程)

    使用Python爬虫时需要安装各种依赖库。安装一共有四种方法: 一、使用pip命令在线安装 二、在pycharm中在线安装 三、使用库的安装包本地安装 四、安装anaconda—anaconda中包含一般使用的所有库 一:pip安装 此步骤需要提前安装好python环境和pip。 1.按windows+R键输入cmd后打开cmd

    2024年02月06日
    浏览(38)
  • 如何通过curl方式进行ElasticSearch增删改查

    点击上方蓝字关注我 关于ElasticSearch增删改查的方法有很多,使用curl操作命令总结如下,如有需要可以点击收藏。 1. ElasticSearch新增数据 如果进行一个类似于SQL的 insert的操作 具体示例如下: 上面的命令使用HTTP POST方法向名为\\\"users\\\"的索引中添加一条文档,文档包含\\\"name\\\"、

    2024年02月14日
    浏览(41)
  • Wireshark+lua插件方式抓包及解析OMCI协议报文详细信息

            GPON协议的网络设备的功能测试,数据流分析是必不可少的,为了方便分析数据流及问题定位,采用Wireshark+lua插件方式抓包及解析OMCI协议报文详细信息(Wireshark官网已有开源omci的lua插件),后续自研开发GPON协议中GTCd帧、GTCu(Burst)帧、PLOAM消息等lua解析插件。

    2024年02月13日
    浏览(100)
  • 【交换机】如何通过Web方式登陆交换机

    一、华为交换机web登陆配置 Web网管是一种对交换机的管理方式,它利用交换机内置的Web服务器,为用户提供图形化的操作界面。用户可以从终端通过HTTPS登录到Web网管,对交换机进行管理和维护,同时也非常方便。 一、配置思路: 1、配置管理IP地址,便于后续通过Web网管登

    2024年02月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包