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中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
Python中str.format()详解
Mar 12 Python
使用Python对Csv文件操作实例代码
May 12 Python
python如何定义带参数的装饰器
Mar 20 Python
python的dataframe和matrix的互换方法
Apr 11 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
python manage.py runserver流程解析
Nov 08 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
python db类用法说明
Jul 07 Python
python cookie反爬处理的实现
Nov 01 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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重定向与伪静态区别
2017/02/19 PHP
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
python中logging库的使用总结
2017/10/18 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
全球性的女装店:storets
2019/06/12 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
JSF的标签库有哪些
2012/04/27 面试题
个人实用简单的自我评价
2013/10/19 职场文书
推荐信格式范文
2014/05/09 职场文书
社区元宵节活动总结
2015/02/06 职场文书