python写邮件发送,python写邮件

  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"

  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类型,什么内容都可以发。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: