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下如何让web元素的生成更简单的分析
Jul 17 Python
Python isinstance函数介绍
Apr 14 Python
Python通过调用有道翻译api实现翻译功能示例
Jul 19 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
深入了解Python 变量作用域
Jul 24 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
PHP目录操作实例总结
2016/09/27 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
CSS常用网站布局实例
2008/04/03 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
3种python调用其他脚本的方法
2020/01/06 Python
Python selenium自动化测试模型图解
2020/04/15 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
数据库笔试题
2013/05/09 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
韩国商务邀请函
2014/01/14 职场文书
大学四年个人自我小结
2014/03/05 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
洗车工岗位职责
2014/03/15 职场文书
结婚保证书范文
2014/04/29 职场文书
个人典型事迹材料
2014/12/30 职场文书
劳动模范获奖感言
2015/07/31 职场文书
小学副班长竞选稿
2015/11/21 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
MySQL多表查询机制
2022/03/17 MySQL
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis