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压缩和解压缩zip文件
Feb 14 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
Atom的python插件和常用插件说明
Jul 08 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
Python中tqdm的使用和例子
Sep 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
php数组合并的二种方法
2014/03/21 PHP
yii的CURD操作实例详解
2014/12/04 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
图片自动更新(说明)
2006/10/02 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python动态加载变量示例分享
2014/02/17 Python
Python中使用SAX解析xml实例
2014/11/21 Python
python使用7z解压apk包的方法
2015/04/18 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
军训自我鉴定
2014/01/22 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
运动会加油口号
2014/06/07 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
Django框架中表单的用法
2022/06/10 Python