Python3实现带附件的定时发送邮件功能
本文实例为大家分享了Python3定时发送邮件功能的具体代码,供大家参考,具体内容如下
1、导入模块
importos importdatetime#定时发送,以及日期 importshutil#文件操作 importsmtplib#邮件模块 fromemail.mime.textimportMIMEText fromemail.mime.multipartimportMIMEMultipart fromemail.headerimportHeader importtime importxlwt#excel写入
2、写入EXCEL
defeWrite(fLocate,file_sheet,file_subject,style0): try: ifos.path.exists(fLocate): os.remove(fLocate)#如果文件存在,则删除 f=xlwt.Workbook(encoding='utf-8')#打开excel文件 fs=f.add_sheet(file_sheet)#sheet名 subject=list(file_subject)#列表化 foriinrange(len(subject)):#找到日期列 if'日期'insubject[i]: col_num=i foriinrange(len(subject)):#sheet标题 fs.write(0,i,subject[i]) foriinrange(10):#单元格宽度为 fs.col(i).width=3333 print("WRITEFINISHED") f.save(fLocate) except: print("WRITEFAILED")
3、发送邮件
defeSend(sender,receiver,username,password,smtpserver,subject,e_content,file_path,file_name): try: #邮件头 message=MIMEMultipart() message['From']=sender#发送 message['To']=",".join(receiver)#收件 message['Subject']=Header(subject,'utf-8') message.attach(MIMEText(e_content,'plain','utf-8'))#邮件正文 #构造附件 att1=MIMEText(open(file_path+file_name,'rb').read(),'base64','utf-8') att1["Content-Type"]='application/octet-stream' att1["Content-Disposition"]="attachment;filename="+file_name message.attach(att1) #执行 smtp=smtplib.SMTP() smtp.connect(smtpserver)#连接服务器 smtp.login(username,password)#登录 smtp.sendmail(sender,receiver,message.as_string())#发送 smtp.quit() print("SEND") except: print("SENDFAILED")
4、配置与执行
whileTrue: #配置 #__time_____ ehour=11#定时小时 emin=49#定时分钟 esec=50#定时秒 current_time=time.localtime(time.time())#当前时间date cur_time=time.strftime('%H%M',time.localtime(time.time()))#当前时间str #__mysql_____ #__email_____ sender=''#发件人邮箱 receiver=['453032441@qq.com']#收件人邮箱,可以多个(列表形式)群发 username=''#发件人姓名 password=''#smtp密码,qq是给你分配一串,163是自己设置 smtpserver=''#邮箱服务器 subject="Hey,here'ssomethinginteresting"#邮件标题 e_content='{0:^27}\n{1:^27}\n{2:^25}\n{3:^25}'.format('i','/\\','(-----)','(--------)')#邮件正文 #__file_____ file_path="D:/"#文件位置 file_name="shit.xls"#文件名 fLocate=file_path+file_name#文件路径 file_subject='I','MISS','U'#sheet标题 file_sheet='ok'#sheet名 style0=xlwt.XFStyle() style0.num_format_str='YYYY-MM-DD' #操作 if((current_time.tm_hour==ehour)and(current_time.tm_min==emin)and(current_time.tm_sec==esec)): print("START") eWrite(fLocate,file_sheet,file_subject,style0) eSend(sender,receiver,username,password,smtpserver,subject,e_content,file_path,file_name) print(cur_time) time.sleep(1)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。