python smtp邮件发送模块

python3中自带了smtplib模块和email模块
smtplib模块负责邮件与服务器的交互
email模块,负责组织邮件内容
smtplib模块
smtplib模块主要通过SMTP类来与邮件系统进行交互
 
1.实例化一个SMTP对象
s=smtplin.SMTP(邮件服务器地址,端口号)
s=smtplib.SMTP_SSL(邮件服务器地址,端口号)
 
2.登陆邮箱,权限验证
s.loging(用户名,密码)
 
3.发送邮件
s.sendmail(发件人邮箱,收件人邮箱,发送内容)
 
4.断开连接
s.close()
 
import smtplib
s=smtplib.SMTP_SSL("smtp.qq.com",465)   #qq邮箱服务器和端口
s.set_debuglevel(1)                                       #打印出与服务器交互的所有信息
s.login("zhouxiaodiok@qq.com","emtpkxlgqmrrbccf")         #登陆用户名和密码
s.sendmail("744700813@qq.com","597238878@qq.com","helloworld") #发件人 收件人 内容
s.close()
 
此方法查看收件人的邮件,会发现没有发件人,没有主题,没有收件人信息
这是因为邮件主题,如何显示发件人,收件人等信息并不是通过SMTP协议发送
而是包含在发送的文本中的,所以我们必须把From To Subject添加到MIMEText中,才是一封完整的邮件
 
email模块
email模块支持发送的邮件内容为纯文本,html内容,图片,添加附件
email模块中有几大类用来针对不同的邮件内容形式,常用如下
MIMEText  内容形式为纯文本,或者html页面
MIMTImage内容形式为图片
MIMEMultipart多形式组合,即内容包含文本和附件
 
每一类对应的导入方式:
from email.mime.text import MIMEText
from email.mine.multipart import MIMEMultipart
from email.mime.image import MIMEImage
 
email负责构造邮件,smtplib负责发送邮件
连接邮件服务器,登陆自己的邮箱,填写发送的主题,发件人,内容
MIMEText
MIMEText(msg,type,chartset):
msg:文本内容
type:默认为plain,即纯文本
发送html格式的时候,修改为html,但同时要求msg的内容也是html的格式
chartset:文本编码,有中文时选择utf-8
 
#构造TEXT格式的消息
msg=MIMEText("hello,test!",_charset="utf-8")
msg["from"]="XXX"
msg["To"]="XXX"
msg["Subject"]="Python发邮件测试”
 
#发送以上构造的邮件内容
要使用as_string来将构造的邮件内容转换成string形式
s.sendmail("XXX","XXX",msg.as_string())
 
import smtplib
from email.mime.text import  MIMEText
s=smtplib.SMTP_SSL("smtp.qq.com",465)   #qq邮箱服务器和端口
s.set_debuglevel(1)  #打印出与服务器交互的所有信息
s.login("zhouxiaodiok@qq.com","emtpkxlgqmrrbccf")         #登陆用户名和密码
msg=MIMEText("HELLO,你好,TEXT!",_charset="utf-8") #实例化MIMETex类,传入参数发送内容,文本格式,编码格式
msg["From"]="744700813@qq.com"
msg["To"]="597238878@qq.com"
msg["Subject"]="python测试"
s.sendmail("744700813@qq.com","597238878@qq.com",msg.as_string()) #发件人 收件人前面配置的所有内容都转成string
s.close()
 
MIMEImage MIMEMultipart
msg=MIMEMultipart()
msg_sub=MIMEText("hello,test!",_charset="utf-8")
msg.attach(msg_sub) #将text消息添加到MIMEMultipart中,作为邮件正文
#图片作为附件
import os
image_data=open(os.getcwd()+"/reports/python33安装-添加path.png","rb").read()   #rb代表二进制 以二进制模式来打开
msg_image=MIMEImage(image_data)
msg_img.add_header('Content-Disposition','attachment',filename='python34.png')
msg_img.add_header('Content-ID','<0>')    #下标是0
msg.attach(msg_img) #将图片信息添加到MIMEMultipart中,作为附件发送
 

posted on 2018-03-25 16:07  一枚快乐的小测试  阅读(219)  评论(0编辑  收藏  举报