Python3实现带附件的定时发送邮件功能


Posted in Python onDecember 22, 2020

本文实例为大家分享了Python3定时发送邮件功能的具体代码,供大家参考,具体内容如下

1、 导入模块

import os
import datetime #定时发送,以及日期
import shutil #文件操作
import smtplib #邮件模块
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import time
import xlwt #excel写入

2、写入EXCEL

def eWrite(fLocate,file_sheet,file_subject,style0):
 try:
  if os.path.exists(fLocate):
   os.remove(fLocate) # 如果文件存在,则删除
  f = xlwt.Workbook(encoding='utf-8') #打开excel文件
  fs = f.add_sheet(file_sheet) #sheet名
  subject = list(file_subject) #列表化
  for i in range(len(subject)): #找到日期列
   if '日期' in subject[i]:
    col_num=i
  for i in range(len(subject)): #sheet标题
   fs.write(0, i, subject[i])

  for i in range(10): #单元格宽度为
   fs.col(i).width=3333

  print("WRITE FINISHED")
  f.save(fLocate)
 except :
  print ("WRITE FAILED")

3、发送邮件

def eSend(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("SEND FAILED")

4、配置与执行

while True:
#配置
 #__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's something interesting"  #邮件标题
 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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
Python反射的用法实例分析
Feb 11 Python
对numpy中向量式三目运算符详解
Oct 31 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python tkinter常用操作代码实例
Jan 03 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
python正则实现提取电话功能
Feb 24 #Python
python3实现公众号每日定时发送日报和图片
Feb 24 #Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 #Python
使用python和pygame绘制繁花曲线的方法
Feb 24 #Python
python3操作微信itchat实现发送图片
Feb 24 #Python
python自动12306抢票软件实现代码
Feb 24 #Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 #Python
You might like
php Rename 更改文件、文件夹名称
2011/05/24 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
Javascript函数的参数
2015/07/16 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python实现删除文件但保留指定文件
2015/06/21 Python
python分割列表(list)的方法示例
2017/05/07 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
python树莓派红外反射传感器
2019/01/21 Python
django富文本编辑器的实现示例
2019/04/10 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
期末学生评语大全
2014/04/24 职场文书
化工工艺设计求职信
2014/06/25 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
校园之声广播稿
2015/08/18 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS