python写邮件发送,python写邮件
在介绍python电子邮件的具体操作之前,我觉得有必要先介绍一下SMTP,这样更有助于理解python电子邮件的实现原理。SMTP协议属于TCP/IP协议族,即简单邮件传输协议。它是一套将邮件从源地址发送到目的地址的规则,它控制邮件传输的方式。python就是基于此实现邮件封装的。
1.python发邮件所需要的基础包
Python需要使用python自己的两个模块smtplib和email来发送邮件。不下载直接导入。
Python的smtplib提供了一种发送电子邮件的便捷方式,它只是封装了smtp协议。
2.smtplib的用法
smtplib的用法比较简单,就是分两步。
创建一个smtp操作对象,连接SMTP目标服务器,可以是163、QQ等。
根据您的帐户(您的电子邮件地址和电子邮件授权码)登录到目标服务器
调用对象中的方法,将邮件发送到目标地址。
python和smtp服务器之间特定交互的通用代码:
importsmtplib
Server=smtplib.smtp(邮件服务器,端口)#发件人邮箱中的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模块的详细理解和使用
邮件模块下mime模块下有三个常用模块,三个模块下有三大类。其实是下面这三条,很绕口。下面是导入方法,一目了然。
from email . mime . textimportmimetext
from email . mime . imageimportmimeimage
发邮件。哑剧。MultipartimportMimemultipartLet先简单说一下他们的关系。如果构造了一个MIMEText对象,它意味着一个文本邮件对象。如果构造了一个MIMEImage对象,就意味着一个图片对象作为附件。要组合多个对象,请使用MIMEMultipart对象,它表示整个邮件。这个应该不是很清楚。下面单独说一下。最后会有一个总的总结。最后是完整的代码(可以发送一切的代码)。
A.A.MIMEText对象中有三个参数我们需要设置,一个是文本内容,一个是文本内容的类型,例如:“text/plain”和“text/html”,一个是文本内容的编码。
构造纯文本:
text_info=helloworld
文本_订阅
=MIMEText(text_info,'plain','utf-8')构造超文本:
url="https://blog.csdn.net/chinesepython"构造base64数据流,用于发送文件的时候使用,构造附件代码: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"'
txt_file=open(r'D:\python_files\files\hello_world.txt','rb').read()B.MIMEImage对象中只需要把读取的文件传入就行。txt=MIMEText(txt_file,'base64','utf-8')
txt["Content-Type"]='application/octet-stream'
#命名发送的附件
txt.add_header('Content-Disposition','attachment',filename='hello_world.txt')
构造图片:
image_file=open(r'D:\python_files\images\test.png','rb').read()C.MIMEMultipart对象创建的类型有三种,此模块主要是通过attach方法把上边构造的内容传入到邮件的整体内容中。image=MIMEImage(image_file)
image.add_header('Content-ID','<image1>')
#命名发送的图片
image["Content-Disposition"]='attachment;filename="red_people.png"'
邮件类型为”multipart/alternative”的邮件正文中包括纯文本正文(text/plain)和超文本正文(text/html)。
邮件类型为”multipart/related”的邮件正文中包括图片,声音等内嵌资源。
邮件类型为”multipart/mixed”的邮件包含附件,图片,文本等都可以添加,所以发的内容多的话一般是用这个的,选择mixed类型,什么内容都可以发。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。