邮件自动化
时间:2021-04-07
本文章向大家介绍邮件自动化,主要包括邮件自动化使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import smtplib
from email.header import Header
from email.utils import formataddr
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import datetime
def eSend():
localtime=datetime.datetime.now().strftime("%Y-%m-%d")
receiver = ['licongcong@kaikeba.com']
sender = 'devaccount@kaikeba.com'
smtpserver = 'smtp.mxhichina.com'
username = sender
password = 'Hk654321'
mail_title = f'主题名称-{localtime}'
# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = formataddr(["数据组", sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
message['To'] = ",".join(receiver)
message['Subject'] = Header(mail_title, 'utf-8')
# 邮件正文内容
message.attach(MIMEText(f'邮件正文-{localtime},请注意查收', 'plain', 'utf-8'))
#邮件附件(可多个附件)
filepath3 = './各学科汇总.xlsx'
filename3 = f"{datetime.date.today()}附件名称.xlsx"
att3 = MIMEText(open(filepath3, 'rb').read(), 'base64',"utf-8")
att3["Content-Type"] = 'application/octet-stream'
att3.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename3))
message.attach(att3)
#发送
try:
smtpObj = smtplib.SMTP_SSL(smtpserver, 465) # 注意:如果遇到发送失败的情况(提示远程主机拒接连接),这里要使用SMTP_SSL方法
smtpObj.connect(smtpserver)
smtpObj.login(username, password)
smtpObj.sendmail(sender, receiver, message.as_string())
smtpObj.quit()
print("邮件发送成功!!!")
# 清除文件
# import os
# filelist = [filepath3]
# for i in filelist:
# if os.path.exists(i):
# os.remove(i)
# print(f"文件已删除{i}")
# else:
# print("没有文件可以供删除")
# #另外隔日文件删除
# yesterday = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")
# file3_y = f'./生成数据/{yesterday}分销员明细.xlsx'
# file8_y=f'./生成数据/分销数据表格汇总{yesterday}.xlsx'
# file_list=[file3_y,file8_y]
# for i in file_list:
# if os.path.exists(i):
# os.remove(i)
# print(f'隔日文件已删除{i}')
# else:
# print("没有隔日文件可以删除")
#发送邮件失败
except Exception as e:
print("发送邮件失败")
print(e)
return "ok"
if __name__ == '__main__':
eSend()
原文地址:https://www.cnblogs.com/ccli555/p/14629218.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IOS 下获取 rootviewcontroller 的版本不同的问题解决办法
- JavaScript实现二叉树的先序、中序及后序遍历方法详解
- JS手机端touch事件计算滑动距离的方法示例
- Java编程之多线程死锁与线程间通信简单实现代码
- Vue 兄弟组件通信的方法(不使用Vuex)
- yii框架redis结合php实现秒杀效果(实例代码)
- C语言中的getchar和putchar的使用方法
- javascript+html5+css3自定义弹出窗口效果
- Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解
- PHP 中魔术常量的实例详解
- 利用php获得flv视频长度的实例代码
- python分布式环境下的限流器的示例
- vue-cli中打包图片路径错误的解决方法
- PHP中类型转换 ,常量,系统常量,魔术常量的详解
- 利用AOP实现SqlSugar自动事务