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操作gmail实例
Jan 14 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
python 的topk算法实例
Apr 02 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中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
js 深拷贝函数
2008/12/04 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
浅谈React高阶组件
2018/03/28 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
一份python入门应该看的学习资料
2018/04/11 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
总会计师岗位职责
2014/02/19 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
工程部文员岗位职责
2015/02/04 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
JavaScript实现简单计时器
2021/06/22 Javascript
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers