将收件人邮箱写入csv文件,在发邮件时读取csv文件。
将邮箱地址写入csv模块的方法是write(),步骤是:
- 引入csv模块
- 提供需要写入csv文件的数据
- 建文件并写入
举例:
import csv
#引用csv模块。
data = [['wufeng ', 'wufeng@qq.com'],['kaxi', 'kaxi@qq.com']]
#待写入csv文件的内容
with open('to_addrs.csv', 'w', newline='') as f:
writer = csv.writer(f)
#定义一个变量writer,进行写入,将刚才的文件变量传进来
for row in data:
writer.writerow(row)
#通过遍历列表data数据一行行写到to_addrs.csv文件中
读取csv文件步骤:
- 引入csv模块
- 打开csv文件
- 读取需要的数据
举例:
import csv
#引用csv模块。
with open('to_addrs.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
to_addrs=row[1]
#这里的row[1]表示读取每行数据的第二个元素
完整代码:
import smtplib
#smtplib 用于邮件的发信动作
from email.mime.text import MIMEText
#Email用于邮件构建内容
from email.header import Header
#用于构建邮件头
import csv
#引用csv模块,用于读取邮箱信息
#发信方信息
from_addr=input('请输入你的邮箱账号:')
password=input('请输入邮箱授权码:')
#发信服务器
smtp_server='smtp.qq.com'
#邮件内容:
text='''
哈喽哈
我爱学习
学习使我快乐
学习是我幸福
'''
#待写入csv文件的收件人数据:人名+邮箱
data=[['张三','xxx@qq.com'],['李四','yyy@163.com']]
#写入收件人数据
with open('to_addrs.csv','w',newline='')as f:
#没有这个文件就会自动创建这个文件,newline=''用来换行的
writer=csv.writer(f)
#定义一个变量writer,进行写入,将刚才的文件变量f传进来
for row in data:
writer.writerow(row)
#通过遍历列表data将数据一行行写到了to_addrs.csv文件中
#读取收件人数据,并启动写信和发信流程
with open('to_addrs.csv','r') as f :
reader=csv.reader(f)
for row in reader:
to_addrs=row[1]
#因为是一行行读取,因为每一行第0列是收件方姓名
#第1列是收件人邮箱账号在这里我们需要收件人账号
msg=MIMEText(text,'plain','utf-8')
msg['Subject']=Header('Python new csv test')
msg['From']=Header(from_addr)
msg['To']=Header(row[0])
#创建服务器对象
server=smtplib.SMTP_SSL(smtp_server)
#进行连接
server.connect(smtp_server,'465')
#登录
server.login(from_addr,password)
#发送邮件
try:
server.sendmail(from_addr,to_addrs,msg.as_string())
print('恭喜,发送成功')
except:
print('发送失败,请重新试试!')
#关闭服务器
server.quit()
运行结果: