python smtplib发送带附件邮件小程序


Posted in Python onMay 22, 2018

最近经常需要出一些临时性的报表,于是就用python 的smtplib 和email 两模块写了个小程序,当数据处理完后通过邮箱把报表文件从服务器上发送出来!

程序名称:sendMail_func.py

#!/usr/bin/env python 
# -*- coding:utf-8 -*- 
import os 
import sys 
import time 
import smtplib 
from email import encoders 
from email.mime.text import MIMEText 
from email.mime.base import MIMEBase 
from email.mime.multipart import MIMEMultipart 
 
def send_mail(sub,content,mail_to,fileList): 
  mail_host='smtp.163.com' 
  mail_user='****@163.com' 
  mail_pass='******' 
  mail_to_list=mail_to.split(',') 
 
  msg = MIMEMultipart() 
  #msg=MIMEText(content,_charset='utf-8') 
  msg['Subject']=sub 
  msg['From']=mail_user 
  msg['To']=";".join(mail_to_list) 
  msg.attach(MIMEText(content,_charset='utf-8')) 
 
  files=fileList.split(',') 
  for f in files: 
    part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data 
    part.set_payload(open(f, 'rb').read()) 
    encoders.encode_base64(part) 
    part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f).encode('utf-8')) 
    msg.attach(part) 
 
  try: 
    s=smtplib.SMTP() 
    s.connect(mail_host) 
    s.login(mail_user,mail_pass) 
    s.sendmail(mail_user,mail_to_list,msg.as_string()) 
    s.close() 
    return True 
  except Exception, e: 
    print str(e) 
    return False 
 
if __name__=="__main__": 
  if len(sys.argv) == 5: 
    send_mail(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4]) 
  else: 
    print '' 
    print '*************************************************' 
    print ' Error: 请传入四个参数值:邮件主题 邮件内容 收件人 附件路径' 
    print '  如: python sendMail_func.py 邮件测试 邮件内容 abc@126.com,def@163.com,123456789@qq.com 1.xlsx,2.xlsx' 
    print '*************************************************' 
    print '' 
    exit

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python里将list中元素依次向前移动一位
Sep 12 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
python基于phantomjs实现导入图片
May 13 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
DataFrame中的object转换成float的方法
Apr 10 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
如何使用Python自动控制windows桌面
Jul 11 Python
Pandas 缺失数据处理的实现
Nov 04 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 Python
python SMTP实现发送带附件电子邮件
May 22 #Python
python 获取当天凌晨零点的时间戳方法
May 22 #Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 #Python
python3.x实现发送邮件功能
May 22 #Python
python 爬虫 批量获取代理ip的实例代码
May 22 #Python
python 获取当天每个准点时间戳的实例
May 22 #Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 #Python
You might like
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
用js实现in_array的方法
2013/11/05 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python中__name__的使用实例
2015/04/14 Python
python实现按任意键继续执行程序
2016/12/30 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
餐饮采购员岗位职责
2014/03/15 职场文书
租房协议书
2014/04/10 职场文书
影子教师研修方案
2014/06/14 职场文书
十八大观后感
2015/06/12 职场文书
公司新员工欢迎词
2015/09/30 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis