当前位置: 首页 > 图灵资讯 > 行业资讯> python发邮件要装什么

python发邮件要装什么

发布时间:2025-04-06 15:57:25

在介绍Python发送电子邮件的具体操作之前,我认为有必要介绍SMTP,这更有助于理解Python发送电子邮件的实现原理。SMTP协议属于TCP/IP协议集,即简单的邮件传输协议。它是一组从源地址到目的地址传输电子邮件的规则。它控制了信件的传输模式。Python还在此基础上包装了电子邮件。

1.python发邮件所需的基本包

python发送邮件需要python自带的两个模块,smtplib和email。无需下载即可直接导入import。

python的smtplib提供了一种非常方便的发送电子邮件的方式,它简单地包装了smtp协议。

2.smtplib的用法

smtplib的用法相对简单,分为两个步骤。

创建SMTP并连接SMTP目标服务器的操作对象可以是163、QQ等。

目标服务器(自己的邮箱地址和邮箱授权码)根据自己的账号登录。

调用对象中的方法,将电子邮件发送到目标地址。

python与smtp服务器具体交互的通用代码:

importsmtplib
server=smtplib.SMTP(mailserver,port)#发件人邮箱中的SMTP服务器端口为25
server.login(sender,passwd)#发件人的邮箱账号、邮箱授权码
#msg.as_string()中as_string()将msg(MIMEText或MIMEMultipart对象)变成str。
server.sendmail(sender,receive,msg.as_string())
server.quit()

连接目标服务器的具体python代码如下:注:本文使用qqsmtp服务器。

相关推荐:Python基础教程

smtp服务器常用邮箱地址:

新浪邮箱:smtp.sina.com,搜狐邮箱:smtp.sohu.com,qq邮箱:smtp.qq.com

sender_maile='80617252@qq.com'#发送方的邮箱地址
sender_pass='lsjdfsljdfk'#邮箱提供的授权码,可以在第三方登录,我这是随便打的。
sftp_obj=smtplib.SMTP('smtp.qq.com',25)
sftp_obj.login(sender_mail,sender_pass)
#三个参数是:发件人邮箱账号、收件人邮箱账号、发送的邮件体
sftp_obj.sendmail(sender_mail,receiver_mail,msg_root.as_string())
sftp_obj.quit()

3.详细理解和使用email模块

email模块下的mime模块下有三个常用的模块,三个模块中有三大类。其实就是下面三个,说的很绕,下面是导入模式,一目了然。

fromemail.mime.textimportMIMEText
fromemail.mime.imageimportMIMEImage
fromemail.mime.multipartimportMIMEMultipart

简单来说说他们的关系。如果构建MIMEText对象,就意味着文本邮件对象。如果构建MIMEMage对象,就意味着作为附件的图片对象。如果你想组合多个对象,你应该使用MIMEMultipart对象,它代表整个电子邮件。这个说法不应该很清楚。下面分开总结,最后总结一下完整的代码(可以发送所有内容的代码)。

A.MIMEText对象中有三个参数需要我们设置,一个是文本内容,另一个是文本内容的类型,例如:text/plain”和”text/html一个是文本内容的编码。

构建普通文本:

text_info='helloworld'
text_sub=MIMEText(text_info,'plain','utf-8')

结构超文本:

url="https://blog.csdn.net/chinesepython"
html_info="""
<p>点击以下链接,你将去一个更大的世界</p>
<p><ahref="%s">clickme</a></p>
<p>iamveryglassesforyou</p>
"""%url
html_sub=MIMEText(html_info,'html','utf-8')
#若不添加下面的行代码,上面的文本将不会正常显示,超文本的内容将作为文本显示
html_sub["Content-Disposition"]='attachment;filename="csdn.html"'

构建base64数据流,用于发送文件时,构建附件代码:

txt_file=open(r'D:\python_files\files\hello_world.txt','rb').read()
txt=MIMEText(txt_file,'base64','utf-8')
txt["Content-Type"]='application/octet-stream'
#命名发送的附件
txt.add_header('Content-Disposition','attachment',filename='hello_world.txt')

B.只需将读取的文件传输到MIMEIMage对象中即可。

构造图片:

image_file=open(r'D:\python_files\images\test.png','rb').read()
image=MIMEImage(image_file)
image.add_header('Content-ID','<image1>')
#命名发送的图片
image["Content-Disposition"]='attachment;filename="red_people.png"'

C.MIMEMultipart对象创建了三种类型,该模块主要通过attach将上述构建的内容传输到电子邮件的整体内容中。

“邮件类型为”multipart/alternative“邮件文本包括纯文本文本(text/plain)和超文本正文(text/html)。

“邮件类型为”multipart/related邮件文本包括图片、声音和其他嵌入资源。

“邮件类型为”multipart/mixed“邮件包括附件、图片、文本等。可以添加,所以如果发送的内容很多,通常会使用这个。选择mixed类型,可以发送任何内容。

相关文章

python3兼容python2吗

python3兼容python2吗

2025-05-09
python3 whl怎么安装

python3 whl怎么安装

2025-05-09
python 字典怎么提取value

python 字典怎么提取value

2025-05-09
python 怎样计算字符串的长度

python 怎样计算字符串的长度

2025-05-09
python 怎么样反向输出字符串

python 怎么样反向输出字符串

2025-05-09
python 怎么判断字符串开头

python 怎么判断字符串开头

2025-05-09