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中的内置函数getattr()介绍及示例
Jul 20 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
如何理解Python中包的引入
May 29 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
Python修改DBF文件指定列
Dec 19 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
字典算法实现及操作 --python(实用)
Mar 31 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 discuz 主题表和回帖表的设计
2009/03/13 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
javascript实现左右控制无缝滚动
2014/12/31 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
Python正则表达式介绍
2012/08/06 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
python字符串的方法与操作大全
2018/01/30 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python实现直播推流效果
2019/11/26 Python
python 从list中随机取值的方法
2020/11/16 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
高一地理教学反思
2014/01/18 职场文书
个人查摆剖析材料
2014/02/04 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS