Python批量发邮件--加附件/抄送
#!/usr/bin/envpython#-*-coding:UTF-8-*-importcsvfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.mime.applicationimportMIMEApplicationfromemail.utilsimportCOMMASPACE,formatdatefromemail.mime.baseimportMIMEBasefromemailimportencodersimporttimedefsend_mail(server,fro,to,subject,text,chao):asserttype(server)==dictasserttype(to)==listmsg=MIMEMultipart()msg['From']=fromsg['Subject']=subjectmsg['To']=COMMASPACE.join(to)#COMMASPACE==','msg['Cc']=chao#COMMASPACE==','msg['Date']=formatdate(localtime=True)xlsxpart=MIMEBase("application","msword")xlsxpart.set_payload(open(u'通知.docx','rb').read(),'utf-8')xlsxpart.add_header('Content-Disposition',u'p_w_upload',filename="通知.docx")msg.attach(xlsxpart)importsmtplibsmtp=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'withopen('1.csv','U')ascsvfile:#reader=csv.DictReader(csvfile)reader=csv.reader(csvfile)l=[]forrowinreader:l.append(row)print("开始")foriinl:name=i[0]mail=i[2:10]chao=i[1]b='''您好!值此“八一”建军节之际,祝愿贵公司蓬勃发展,建军节快乐!'''a="尊敬的{0}:".format(name)text=a+bwhile''inmail:mail.remove('')to=mailprint('to',to,'ok','chao',chao,'ok')time.sleep(7)send_mail(server,fro,to,subject,text,chao)
1.csv 的格式
第一列是客户名称,第二列是抄送的人,第三列和后面的是要发送的人。
msg['To']=COMMASPACE.join(to)#COMMASPACE==','msg['Cc']=chao#COMMASPACE==','
smtp.sendmail(fro,to+[chao],msg.as_string())
需要特别注意的是上面,抄送的是 1个人。
Cc 是指要抄送,要注意抄送的是一个人还是多个。如果是多个,需要按照to的格式。
本脚本有BUG,就是收附件的时候,如果附件是中文名字,手机客户端收的时候会显示一个 未命名。电脑客户端没有问题。
暂未解决。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。