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的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
Python中创建二维数组
Oct 17 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
简单了解python PEP的一些知识
Jul 13 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
python序列类型种类详解
Feb 26 Python
Pycharm IDE的安装和使用教程详解
Apr 30 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
用穿越火线快速入门php面向对象
2012/02/22 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
繁简字转换功能
2006/07/19 Javascript
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
什么是规则表达式
2012/05/03 面试题
亲子读书活动方案
2014/02/22 职场文书
初三学习计划书范文
2014/04/30 职场文书
国贸专业求职信
2014/06/28 职场文书
2014年党小组工作总结
2014/12/20 职场文书
学校捐书倡议书
2015/04/27 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL