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文件操作类操作实例详解
Jul 11 Python
Python selenium 三种等待方式解读
Sep 15 Python
python利用正则表达式提取字符串
Dec 08 Python
Django的信号机制详解
May 05 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
Pandas加速代码之避免使用for循环
May 30 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下删除字符串中HTML标签的函数
2008/08/27 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
joomla数据库操作示例代码
2016/01/06 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
Python中用于计算对数的log()方法
2015/05/15 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
django中静态文件配置static的方法
2018/05/20 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
python和go语言的区别是什么
2020/07/20 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
以下的初始化有什么区别
2013/12/16 面试题
广州地球村科技数据库题目
2016/04/25 面试题
小学教师的自我评价范例
2013/10/31 职场文书
大四学年自我鉴定
2013/11/13 职场文书
国庆促销活动总结
2014/08/29 职场文书
修辞手法有哪些?
2019/08/29 职场文书
Python使用openpyxl模块处理Excel文件
2022/06/05 Python