在介绍具体的实现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服务器之间的具体交互的通用代码:
import smtplib 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连接目标服务器的代码如下:注:本文章用的是qq的smtp服务器。
相关推荐:《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模块下有常用的三个模块,三个模块中有三个大类。其实就是下边这三个了,说的很绕,下边为导入方式,一目了然。
from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart
简单说下他们的关系,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象,他代表的是整个邮件。这样说应该还不是很清晰,下边就分开来说,最后会总的总结,在最后边就是完整的代码(可以发送一切内容的代码)。
A.MIMEText对象中有三个需要我们设置的参数,一个是正文内容,一个是正文内容的类型,例如:”text/plain”和”text/html”,一个是正文内容的编码。
构造普通文本:
text_info = 'hello world ' text_sub = MIMEText(text_info,'plain', 'utf-8')
构造超文本:
url = "https://blog.csdn.net/chinesepython" html_info = """点击以下链接,你会去向一个更大的世界
i am very glasses for you
""" % 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', '') # 命名发送的图片 image["Content-Disposition"] = 'attachment; filename="red_people.png"'
C.MIMEMultipart对象创建的类型有三种,此模块主要是通过attach方法把上边构造的内容传入到邮件的整体内容中。
邮件类型为”multipart/alternative”的邮件正文中包括纯文本正文(text/plain)和超文本正文(text/html)。
邮件类型为”multipart/related”的邮件正文中包括图片,声音等内嵌资源。
邮件类型为”multipart/mixed”的邮件包含附件,图片,文本等都可以添加,所以发的内容多的话一般是用这个的,选择mixed类型,什么内容都可以发。
分享文章:创新互联Python教程:python发邮件要装什么
本文路径:http://www.shufengxianlan.com/qtweb/news12/19862.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联