day06 - 代码发送邮件

该文详细介绍了使用Python的smtplib和email库发送邮件的基本流程,包括发送纯文本邮件、添加附件、构建HTML格式的邮件以及使用格式字符串。同时,展示了如何批量发送邮件以及使用os模块进行文件操作。

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)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值