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 01 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
python如何实现代码检查
Jun 28 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
Python中Yield的基本用法
Oct 18 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
python实战之90行代码写个猜数字游戏
Apr 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python的一些用法分享
2012/10/07 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
python实现一个简单的ping工具方法
2019/01/31 Python
python实现复制大量文件功能
2019/08/31 Python
如何基于Python批量下载音乐
2019/11/11 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
简历自我评价怎么写好呢?
2014/01/04 职场文书
师德学习感言
2014/01/31 职场文书
鲜花方阵解说词
2014/02/13 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
教师考核表个人总结
2015/02/12 职场文书
复兴之路观后感
2015/06/02 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server