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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。