day06 - 代码发送邮件
01 发送邮件基本流程
import smtplib #导入协议
1. 连接邮箱服务器
connect = smtplib.SMTP_SSL('SMTP.qq.com', 465)
2. 登录邮箱
connect.login('zhuc@163.com, 'vczadfwbegc')
3. 准备邮件内容
from email.mime.multipart import MIMEMultipart # 构建一个邮件对应的类
from email.header import Header # 创建邮件主题的类
from email.mime.text import MIMEText # 创建邮件内容的类
1) 创建一个空的邮件对象
email = MIMEMultipart()
2) 设置收件人信息
email['To'] = 'zhuc@163.com'
3)设置发件人信息
email['From'] = 'python <zuu6@qq.com>'
4) 设置邮件主题
email['Subject'] = Header('第一次发送邮件', 'utf-8').encode()
5) 添加正文
a. 创建正文内容
msg = MIMEText('上午好', 'plain')
b. 将正文内容添加到邮件中
email.attach(msg)
4. 发送邮件
connect.sendmail('zhu6@qq.com', 'zhuc@163.com', email.as_string())
5.关闭连接
connect.close()
02 发送附件
import smtplib # 构建一个邮件对应的类
from email.mine.multipart import MIMEMultipart # 构建一个邮件对应的类
from email.header import Header # 创建邮件主题的类
from email.mine.text import MIMEText # 创建邮件内容的类
1.连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
2. 登录邮箱
connect.login('zhu6@qq.com', '授权码')
3.构建邮件
mail = MIMEMultipart()
mail['Subject'] = Header('发送附件', 'utf-8').encode()
mail['From'] = 'zhuc <zhu6@qq.com>'
mail['To'] = 'zhuc@163.com'
普通正文:MIMEText(字符串,‘plain’)
masg1 = MIMEText('how are you?', 'plain', 'utf-8')
mail.attach(masg1)
构建附件:
附件:MIMEText(二进制类型的文件内容, ‘base64’, ‘utf-8’)
a. 打开附件对应的文件,并且获取文件内容。
data1 = open('files/ppp.jpg','rb').read()
b. 创建附件对象
file1 = MIMEText(data1, 'base64','utf-8')
c. 设置附件在邮件中显示的位置和格式(注意:filename后面的附件名称不能有中文)
file1 = ['Content-Disposition'] = 'attachment; filename = "ppp.jpg"'
d. 将附件添加到邮件中
mail.attach(file1)
4. 发送邮件
connect.sendmail('zhu6@qq.com', 'zhuc@163.com', mail.as_string())
5. 关闭连接
connect.close()
03 发送超文本
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
name = input('客户姓名:')
gender = input('客户性别:')
if gender == '男':
call = '先生'
else:
call = '女士'
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('7265522@qq.com', 'ilxqczadfwb')
email = MIMEMultipart()
email['Subject'] = Header('发送超文本', 'utf-8').encode()
email['From'] = 'YTing <7265522@qq.com>'
email['To'] = 'y_t9@163.com'
# 构建html格式正文(读html文件内容,获取文件内容对应的字符串)
data1 = open('files/data.html', encoding='utf-8').read() % (name[0], call, name)
msg = MIMEText(data1, 'html')
email.attach(msg)
connect.sendmail('7265522@qq.com', 'y_t9@163.com', email.as_string())
connect.close()
04 格式字符串
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
gender = input('请输入性别:')
1. 格式字符串
a.语法:包含格式占位符的字符串 % (数据1, 数据2, 数据3, …)
b.说明:格式占位符
%s - 任何类型的数据的占位。
%d - 数字(整位)占位符,填充的时候会自动将数据转换成整数。
%f - 数字占位符,填充的时候会让数字保留6位小数。
%.Nf - 数字占位符,填充的时候会让数字保留N位小数。
# 'xxx今年xx岁'
msg = '%s今年%d岁' % (name, age)
print(msg)
msg = 'a:%s, b:%d, c:%.2f' % ('abc', 23.9, 30234.0923)
print(msg)
# 'x先生/女士,你今年xx岁!'
if gender == '男':
msg = '%s先生,你今年%d岁!' % (name[0], age)
else:
msg = '%s女士,你今年%d岁!' % (name[0], age)
print(msg)
05邮件批量发送
data = [
{'name': '李四', 'gender': '女', 'score': 1000, 'email': '7265522@qq.com'},
{'name': '张三', 'gender': '男', 'score': 567, 'email': 'y_t9@163.com'},
{'name': '赵五', 'gender': '男', 'score': 478, 'email': 'zhuuc@163.com'},
{'name': '王六', 'gender': '女', 'score': 672, 'email': '8739231@qq.com'},
{'name': '朱七', 'gender': '男', 'score': 325, 'email': '18732138@qq.com'}
]
# 练习:给上面data中所有客户发送邮件,如果积分在500分以上,在称呼加"尊敬的"
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
# 1. 连接服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 2.登录邮箱
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')
# 3. 构建邮件对象(写信)
for info in data:
# 1)准备邮件内容相关的数据
# 收件人邮箱地址
to_email = info['email']
# 收件人姓名
name = info['name']
# 称呼
if info['gender'] == '女':
call = '女士'
else:
call = '先生'
# 前缀
if info['score'] >= 500:
pre = '尊敬的'
else:
pre = ''
# 2)创建邮件
email = MIMEMultipart()
email['Subject'] = Header('京东会员活动通知', 'utf-8').encode()
email['From'] = 'JingDong <726550822@qq.com>'
email['To'] = to_email
email_content = open('files/data.html', encoding='utf-8').read() % (pre+name[0], call, name)
msg = MIMEText(email_content, 'html')
email.attach(msg)
# 3)发送邮件
connect.sendmail('726550822@qq.com', to_email,email.as_string())
connect.close()
06 os 常见函数
import os #导入函数
os是python提供的专门用来处理文件或者文件夹(也叫目录)的模块
文件的路径:
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始写,而且程序写绝对路径的时候字符串的最前面要加r)。
2)相对路径:
前提:需要操作的文件或者文件夹在工程里面的时候才可以使用相对路径。
a. 用 . 开头表示当前目录(当前目录指的是,当前代码文件所在的文件夹)
注意:如果相对路径是以’./‘开头的,’./'可以省略。
b. 用 … 开头表示当前目录的上层目录。
1.创建文件夹
# os.mkdir(文件夹路径)
注意:创建文件夹的时候,如果文件夹已经存在会报错!
os.mkdir('./names')
os.mkdir('./files/abc')
2.判断文件或者文件夹是否已经存在
# os.path.exists(文件或者文件夹路径)
result = os.path.exists('./files/a')
print(result)
result = os.path.exists('./files/car.png')
print(result)
在files下面创建img文件夹
if not os.path.exists('./files/img'):
os.mkdir('./files/img')
3.罗列出指定文件夹中所有的内容
# os.listdir(文件夹路径)
content = os.listdir('./files')
print(content)
4.判断是否是文件或者是文件夹
# 1)os.path.isfile(路径) - 判断指定路径对应的内容是否是文件
# 2)os.path.isdir(路径) - 判断指定路径对应的内容是否是文件夹
result = os.path.isfile('./files/test')
print(result)
该文详细介绍了使用Python的smtplib和email库发送邮件的基本流程,包括发送纯文本邮件、添加附件、构建HTML格式的邮件以及使用格式字符串。同时,展示了如何批量发送邮件以及使用os模块进行文件操作。
4万+

被折叠的 条评论
为什么被折叠?



