导图社区 Python-SMTP发送邮件
在公司中,我们经常要为合作机构或者其他同事用电子邮件发送Excel表格等文件。如果是同一个文件“群发”,其实还好。但是,针对不同的合作机构,不同板块的同事要将一堆文件分开发送,怎么处理?如果还需要每天重复发送,那又……?别急, Pyhon为我们提供了电子邮件发送的功能。我们可以借助Python将邮件信息封装在msg对象中,再操作SMTP对象进行邮件发送,让每天重复要做的工作用Python来帮我们完成,是一个不错的想法。 本思维导图介绍了用Python连接SMTP服务器发送邮件的编码思路,重点是围绕smtp_obj、msg两个对象来操作,用smtp_obj实现邮件发送的功能,主要是操作步骤,遵循时间顺序的逻辑;msg则用来编写邮件信息,其分别由标题头、正文、附件(或无)构成,遵循结构顺序的逻辑。通过msg编写完邮件信息,再将其放入到smtp_obj中将其发送,实现邮件发送的功能。 希望本思维导图对您能有所帮助!
编辑于2024-01-22 09:19:07当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
社区模板帮助中心,点此进入>>
当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python - 应用篇
Python - SMTP发送邮件
自动化办公系列
制图人:咖啡喵 制图时间:2024/1/20 制图软件:mindmaster
构造邮件信息2
msg创建
无附件
msg = MIMEText(_text, _subtype, _charset)
含附件
msg = MIMEMultipart()
创建含附件msg
from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText from email.mime.audio import MIMEAudio from email.mime.image import MIMEImage from email.mime.Application import MIMEApplication
msg = MIMEMultiipart()
标题头
msg['From'] = Header(s, charset)
msg['To'] = Header(s, charset)
msg['From'] = Header(s, charset)
添加正文
text = MIMEText(_text, _subtype, _charset)
msg.attacht(text)
添加附件
MIMEText
添加文本文件
att = MIMEText(open('xxxx.txt', 'rb').read(), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment;filename="xxx.txt"'
msg.attach(att)
MIMEImage
添加图片
att = MIMEImage(open('xxxx.jpg', 'rb').read(),)
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition']='attachment;filename="xxx.jpg"'
msg.attach(att)
MIMEAudio
添加音频文件
att = MIMEAudio(open('xxxx.mp3', 'rb').read())
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition']='attachment;filename="xxx.mp3"'
msg.attach(att)
MIMEApplication
添加PPT、Excel等
att = MIMEApplication(open('xxxx.xlsx', 'rb').read())
att['Content-Type'] = 'application/octet-stream'
att.add_header('content-disposition', 'attachment', filename='xxx.xlsx')
msg.attach(att)
补充说明
Content-Type (内容类型)
网络文件类型
网页编码
application/octet-stream
二进制数据流(常见文件)
Content-Disposition (激活附件下载对话框)
inline
默认值,问价内容显示在页面
attachment
弹出对话框,用户下载
filename
文件名
The end.
Python - SMTP发送邮件
自动化办公系列
制图人:咖啡喵 制图时间:2024/1/20 制图软件:mindmaster
代码编写思路
库
构造邮件信息
msg
smtplib
使用SMTP服务器
smtp_obj
发送邮件
smtp_obj.sendmail(from_addr, to_addrs, msg.as_string())
SMTP服务器
import smtplib
smtp_obj = smtplib.SMTP_SSL(host, port)
host - 服务器
port - 端口
例:'smtp.qq.com', 465
1
登录服务器
smtp_obj.login(user, password)
user
发件人的邮箱
password
邮箱授权码
2
发送邮件
smtp_obj.sendmail(from_addr, to_addrs, msg.as_string())
from_addr
str,发件人邮箱
msg
邮件信息
to_addrs
list,收件人邮箱
3
关闭服务器
smtp_obj.quit()
构造邮件信息1
msg创建
无附件
msg = MIMEText(_text, _subtype, _charset)
含附件
msg = MIMEMultipart()
创建无附件msg
from email.mime.text import MIMEText from email.header import Header
msg = MIMEText(_text, _subtype, _charset)
正文
_text
_subtype
普通格式
'plain'
html格式
'html'
标题头
msg['From'] = Header(s, charset)
msg['To'] = Header(s, charset)
msg['Subject'] = Header(s, charset)
_text正文格式
普通格式
text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttps://www.python.org"
msg = MIMEText(text, 'plain')
html格式
html = """\ <html> <head></head> <body> <p>Hi!<br> How are you?<br> Here is the <a href="https://www.python.org">link</a> you wanted. </p> </body> </html> """
msg = MIMEText(html, 'html')
优化标题头
收件箱可以收到邮件,但是没有发件人的信息
from email.utils import parseaddr, formataddr def _format_addr(s): addr = parseaddr(s) return formataddr(addr)
msg['From'] = _format_addr('poster_name<email_addr>')
To be continued!!!