一、smtplib模块:负责发送邮件
import smtplib
smtpObj = smtplib.SMTP() #实例化一个SMTP对象
smtpObj.connect(mail_host,25) #连接服务器
'''smtpObj = smtplib.SMTP(mail_host,25) 一步到位亦可'''
smtpObj.set_debuglevel(1) #打印和SMTP服务器交互的所有信息,不是必需!
smtpObj.login(mail_user, mail_pass) #登录邮箱,权限验证
smtpObj.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件
smtpObj.close() #断开连接
- mail_host = "smtp.163.com" 服务器
- 25为SMTP的默认端口号
- mail_user = "xxx@163.com" 用户名
- mail_pass为登录密码或授权码,具体视邮箱设置定
- from_addr = '发件地址'
- to_addr = "收件地址" 多收件人可用list组装
二、email模块:负责构造邮件
from email.mime.text import MIMEText #MIME媒体类型,内容形式为纯文本、HTML页面
msg = MIMEText("I use python", "plain", "utf-8") #实例化文本对象,plain代表纯文本,也可使用HTML
from email.header import Header #用于创建邮件头部
msg['From'] = "xxx"
msg['To'] = "xxx"
msg['Subject'] = "xxx"
'''发送以上构造文件用使用msg.as_string()将邮件内容转换为string形式'''
from email.mime.image import MIMEImage #内容形式为图片
from email.mime.multipart import MIMEMultipart #多形式组合,可包含文本和附件
from email.mine.application import MIMEApplication #默认子类型是二进制文件,服务器根据扩展名来猜测附件类型
msg = MIMEMultipart()
msg.attach(MIMEText("I use python", "plain", "utf-8") #邮件正文内容
File = 'd:\\xxx\\xxx\\xxx.jpg/txt/mp3'
fileApart = MIMEApplication(open(File, 'rb').read()) # rb以二进制方式读取
fileApart.add_header('Content-Disposition', 'attachement', filename = xxx) #设置附件头,命名附件
msg.attach(fileApart) #添加附件到MIMEMultipart
三、schedule定时模块:自动定时发邮件
- pip install schedule 安装第三方库schedule
import schedule
import time
def job():
email() #自动发送邮件封装函数
schedule.every().day.at("time").do(job) #部署在每天time时间执行函数任务
'''every().second/minutes/hour/monday都可以'''
while True():
schedule.run_pending() #检查上面的任务部署情况,如果任务准备就绪,就启动执行程序
time.sleep(x) #程序间隔xS进行检查