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()

浙公网安备 33010602011771号