这是一个python脚本,本意是闲着无聊,想要给自己朋友列表发跨年祝贺邮件,然后又不好让别人看出我是群发的,还想让每封发给对方的邮件都喊得出收件人的名字,于是写了这个脚本,我在outlook邮箱导出了联系人的csv列表后,批量读取该文件的数据,然后用变量存储每个人的名词,在正文的称呼里调用变量。我用了HTML格式做正文,你可以自己给点美化。
我用outlook邮箱导出的CSV文件会存在一个坑,那就是第一个键名First Name实际输出不是First Name,而是\ufeffFirst Name,这里给个脚本实际测试一下实际从csv文件里读到的数据是怎样的
1.CSV文件里数据的字典键名称获取
import csv
# 读取CSV文件
file_path = r'C:\xxxx.csv' # 你的CSV文件路径
with open(file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row)
2.qq邮箱批量发送脚本
邮箱导出联系人的CSV文件后,如果你Excel打开是乱码,请不用在意,编码问题,脚本能识别的,如果你要修改,建议用记事本打开就不乱码了。
import csv
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# 配置发送方QQ邮箱信息
sender_email = '你自己的发件邮箱地址'
password = '邮箱授权码' # 使用生成的授权码,不是密码,自行搜索如何获取邮箱授权码
# 读取CSV文件
file_path = r'c:\xxx.csv' # 你的CSV文件路径
with open(file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
recipients = [row for row in reader]
# 连接到QQ的SMTP服务器
with smtplib.SMTP_SSL('smtp.qq.com', 465) as server: # QQ邮箱的SMTP服务器和端口
server.login(sender_email, password) # 使用QQ邮箱和生成的授权码
for recipient in recipients:
# 创建邮件内容,recipient['电子邮件']中括号里面的值填你自己CSV文件里的邮件地址那一列的键名
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = recipient['电子邮件']
message['Subject'] = '新年快乐!'
# 跨年短信内容
body = f"亲爱的{recipient['姓名']},\n\n愿您在新的一年里拥有幸福、健康和成功!祝您跨越2023到2024的每一步都是坚定和欢乐。新年快乐!\n\nBest regards,\n谭海锋"
message.attach(MIMEText(body, 'plain'))
# 发送邮件
server.sendmail(sender_email, recipient['电子邮件'], message.as_string())
print(f"已发送至 {recipient['电子邮件']}")
print("所有邮件发送完成!")