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多线程编程(五):死锁的形成
Apr 05 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
Python socket模块方法实现详解
Nov 05 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
python3 字符串str和bytes相互转换
Mar 23 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
保护环境倡议书
2014/04/14 职场文书
信息技术课后反思
2014/04/27 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
大学生村官个人总结
2015/02/15 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
MySQL创建管理KEY分区
2022/04/13 MySQL
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers