固定模板
import smtplib
1、连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com',465)
2、登陆邮箱
connect.login('531089602@qq.com','jnnkhltdhkwsbghe')
3 、准备邮件内容
from email.mime.multipart import MIMEMultipart #
from email.header import Header
from email.mime.text import MIMEText
1、创建一个空的邮件对象
email = MIMEMultipart()
2、设置收件人信息
email['To'] = 'y_t209@163.com'
3、设置发件人信息
email['from'] = '531089602@qq.com<531089602@qq.com>'
4、设置邮件主题
email['Subject'] = Header('hello!','utf-8').encode()
5、添加正文
MIMETxet(正文内容,类型)
类型:plain(普通文字对应的正文),html(超文本)、base64(附件和图片)
a、创建正文内容
msg = MIMEText('桐花万里丹山路','plain')
b、将正文内容添加到邮件中
email.attach(msg)
6、正文发送
connect.sendmail('531089602@qq.com','y_t209@163.com', email.as_string())
7、关闭邮箱
connect.close()
发送附件
—— 前面固定操作不变
打开附件对应的文件,并且获取文件内容
data1 = open('fie/loop and list.pdf', 'rb').read()
创建附件对象
fie1 = MIMEText(data1,'base64','utf-8')
设置附件在邮件中显示的为止和格式(注意:filename 后的附件名称不能有中文)
fie1['Content-Disposition'] = 'attachment; filename="Loop and list.pdf"'
# 后缀保持一致
发送超文本
构建html格式正文
data1 = open('fie/data.html',encoding='utf-8').read()
#html文件内容,获取文件内容对用的字符串)
msg = MIMEText(data1,'html')
mail.attach(msg)
格式字符串
'''
语法:包含格式占位符的字符串 % (数据1 、数据2、数据3、、、、)
说明:格式占位符
%s - 任何类型的数据的占位
%d - 数字占位符,数据转换成整数
%f - 数字占位符(填充数字,默认保留小数点后六位)
%.Nf - 数字占位符,填充数字,保留小数点后 N 位)
'''
**实例:**XXX先生/女士,你今年XXX岁了!
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
gender = input('请输入性别:')
if gender == '男':
msg= '%s先生,你今年%d岁'%(name[0],age)
else:
msg = '%s女士,你今年%d岁'%(name[0],age)
print(msg)
注意:%s 可以用于任何类型语句后面,只有保持前后一致,且值存在可找;
邮件批量发送
data = [
{'name': '余婷', 'gender': '女', 'score': 1000, 'email': '726550822@qq.com'},
{'name': '张三', 'gender': '男', 'score': 567, 'email': 'y_t209@163.com'},
{'name': '朱聪', 'gender': '男', 'score': 478, 'email': 'zhuucc@163.com'},
{'name': '马诗雨', 'gender': '女', 'score': 672, 'email': '873925431@qq.com'},
{'name': '李相葛', 'gender': '男', 'score': 325, 'email': '719368987@qq.com'}
]
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
connect = smtplib.SMTP_SSL('smtp.qq.com',465)
connect.login('531089602@qq.com','jnnkhltdhkwsbghe')
for info in data:
to_email = info['email']
name = info['name']
if info['gender']== '女':
call = '女士'
else:
call = '男士'
if info['score'] >= 500:
pre = "尊敬的"
else:
pre = ''
email = MIMEMultipart()
email['subject'] = Header('会员积分通知', 'utf-8').encode()
email['From'] = 'Huiyuan <531089602@qq.com>'
email['To'] = to_email
email_content = open('fie/data.html',encoding='utf-8').read() %(pre+name[0],call,name)
msg = MIMEText(email_content, 'html')
email.attach(msg)
connect.sendmail('531089602@qq.com', to_email, email.as_string())
提醒:if 在 for 循环中可重复多次,找到需要循环的阶段,依次放入循环体的内容,对变量的获取以及确定放入的位置,用%s 替换内容;
os常见函数
import os
—— os 是python提供固定的专门用来处理文件或者文件夹的模块
# 路径
'''
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始写,而且程序
写绝对路径时,字符串前最好加 r )
2)相对路径:前提(需要操作的文件或者文件夹在工程里面的时后才可以使用相对路径)
a、用 . 开头表示当前目录(当前目录:当前代码文件的所在的文件夹)
注意:如果相对路径是以’./ '为开头,可以省略
b、用 .. 开头表示当前目录的上层目录
'''
- 绝对路径
path = r'D:\DAH\千峰学习\每日回顾\24.txt'
print(path)
-
相对路径
创建文件夹
#os.mkdir(文件夹路径) —— 创建文件夹时,如果文件已经存在,文件会报错。
os.mkdir('./names')
os.mkdir('./fie/abd')
判断文件或者文件夹是否以及存在
# os.path.exists(文件或者文件夹路径)
result = os.path.exists('./names')
print(result)
# 在fie 创建 img 文件夹(判断fie文件中 img文件是否存在)
if os.path.exists('./fie/img'):
os.mkdir('./img')
罗列除指定文件夹中所有的内容
# os.listdir(文件夹路径)
res= os.listdir('./fie')
print(res)
判断是否是文件或者文件夹
# 1)os.path.isfile(文件路径) - 判断指定内容是否是文件
# 2)os.path.isdir(文件路径) - 判断指定路径对应的内容是否是文件夹
result = os.path.isfile('./fie/abd')
for name in res:
if os.path.isfile('./fie/%s' % (name)):
print(name)