python进阶(五)-邮件

一、邮件模块

python3中自带了smtplib和email模块

smtplib模块:负责与邮件服务器进行交互

email模块:负责组织邮件内容

二、smtplib模块

smtplib模块:主要通过SMTP类来与邮件系统进行交互

1、实例化一个SMTP对象

  s=smtplib.SMTP(邮件服务器地址,端口号)

  s=smtplib.SMTP_SSL(邮件服务器地址,端口号)#加密方式

2、邮箱登陆--权限验证

  s.login(用户名,密码)

  注意:第三方应用登陆邮箱,密码是授权码

3、发送邮件

  s.sendmail(发件人邮箱,收件人邮箱,发送内容)

4、断开连接

  s.close()

例子:import smtplib

  s = smtplib.SMTP_SSL("smtp.qq.com",465)
  s.login("825528598","phwzzwjudkagbejh")
  s.set_debuglevel(1)#打印出与SMTP服务器交互的所有信息
  s.sendmail("825528598@qq.com","fm@nankang.com.cn","python发送-text测试")

  s.close()
三、email模块

email模块:支持发送的邮件内容为纯文本,html内容,图片、添加附件。

email中有几大类用来针对不同的邮件内容形式。常用如下:

MIMEText:内容形式为纯文本或html页面

MIMEImage:内容形式为图片

MIMEMultipart:多形式组合。即内容包含文本和附件

每一类导入方式:

from email.mime.text import   MIMEText

from email.mime.image import  MIMEImage

from email.mime.mutipartimport  MIMEMultipart

四、MIMEText

MIMEText(msg,type,chartset)

msg:文本内容

type:默认为plain,即纯文本

  发送html的时候,修改为html。但同时要求msg的内容也是html格式

chartset:文本编码。有中文时选择utf-8

 

#构造TEXT格式的消息

msg=MIMEText("hello test",_chartset="utf-8")

msg["From"]="发件人邮箱地址"

msg["To"]="收件人邮箱地址"

msg["Subject"]="邮件主题"

 

#发送以上构造的邮件内容

要使用as_string来将构造的邮件内容转换成string形式

s.sendmail("XXX","XXX",msg.as_string())

五、MIMEImage、MIMEMultipart

#邮件正文

msg=MIMEMultipart()

msg_sub=MIMEText("hello test",_chartset="utf-8")

msg.attach(msg_sub)      #将text消息添加到MIMEMultipart中,作为邮件正文

 

#图片作为附件

import os

img_data=open(os.getcwd()+"/xxx.png","rb").read()

msg_img=MIMEImage(img_data)   #实例化

msg_img.add_header('Content-Disposition', 'attachment', filename='xxx.png')  #附件说明信息

 

msg_img.add_header('Content-ID', '<0>')

msg.attach(msg_img)     #将图片消息添加到MIMEMultipart中,作为附件发送。

 

#html作为附件

  html_content = open(os.getcwd()+'/xxx.html',encoding = 'utf-8').read()

  msg_html=MIMEText(html_content,'html',_charset='utf-8')

  msg_html.add_header('Content-Disposition', 'attachment',filename='xxx.html')

  msg.attach(msg_html)

 

 

 #发送邮件

  s = smtplib.SMTP_SSL("smtp.qq.com",465)
  s.login("825528598","phwzzwjudkagbejh")
  s.set_debuglevel(1)
  s.sendmail("825528598@qq.com","fm@nankang.com.cn",msg.as_string())
  s.close()

 

posted @ 2018-08-13 09:25  sinder2018  阅读(41)  评论(0)    收藏  举报