Python批量发邮件--加附件/抄送
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python批量发邮件--加附件/抄送相关的知识,希望对你有一定的参考价值。
# !/usr/bin/env python # -*- coding: UTF-8 -*- import csv from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication from email.utils import COMMASPACE, formatdate from email import encoders import time def send_mail(server, fro, to, subject, text, chao): assert type(server) == dict assert type(to) == list msg = MIMEMultipart() msg[‘From‘] = fro msg[‘Subject‘] = subject msg[‘To‘] = COMMASPACE.join(to) # COMMASPACE==‘, ‘ msg[‘Cc‘] = chao # COMMASPACE==‘, ‘ msg[‘Date‘] = formatdate(localtime=True) msg.attach(MIMEText(text)) xlsxpart = MIMEApplication(open(‘附件.docx‘, ‘rb‘).read()) xlsxpart.add_header(‘Content-Disposition‘, ‘attachment‘, filename=‘附件.docx‘) msg.attach(xlsxpart) import smtplib smtp = smtplib.SMTP(server[‘name‘], server[‘port‘]) smtp.ehlo() smtp.starttls() smtp.ehlo() smtp.login(server[‘user‘], server[‘passwd‘]) smtp.sendmail(fro, to+[chao], msg.as_string()) smtp.close() if __name__ == ‘__main__‘: server = {‘name‘: ‘xx.163.com‘, ‘user‘: ‘xxxxx‘, ‘passwd‘: ‘xxx‘, ‘port‘: 25} fro = ‘xxxxxxxx‘ subject = ‘xxxxx‘ with open(‘1.csv‘, ‘U‘) as csvfile: # reader = csv.DictReader(csvfile) reader = csv.reader(csvfile) l = [] for row in reader: l.append(row) print("开始") for i in l: name = i[0] mail = i[2:10] chao = i[1] b = ‘‘‘ 您好! 值此“八一”建军节之际,祝愿贵公司蓬勃发展,建军节快乐! ‘‘‘ a = "尊敬的{0}:".format(name) text = a + b while ‘‘ in mail: mail.remove(‘‘) to = mail print(‘to‘, to, ‘ok‘, ‘chao‘, chao, ‘ok‘) time.sleep(7) send_mail(server, fro, to, subject, text, chao)
csv 的格式
第一列是客户名称,第二列是抄送的人,第三列和后面的是要发送的人。
msg[‘To‘] = COMMASPACE.join(to) # COMMASPACE==‘, ‘ msg[‘Cc‘] = chao # COMMASPACE==‘, ‘
smtp.sendmail(fro, to+[chao], msg.as_string())
需要特别注意的是上面,抄送的是 1个人。
Cc 是指要抄送,要注意抄送的是一个人还是多个。如果是多个,需要按照to的格式。
本文出自 “何全” 博客,请务必保留此出处http://hequan.blog.51cto.com/5701886/1953223
以上是关于Python批量发邮件--加附件/抄送的主要内容,如果未能解决你的问题,请参考以下文章