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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
详解python单元测试框架unittest
Jul 02 Python
Python中@property的理解和使用示例
Jun 11 Python
python操作文件的参数整理
Jun 11 Python
python里dict变成list实例方法
Jun 26 Python
python实点云分割k-means(sklearn)详解
May 28 Python
Python3基于print打印带颜色字符串
Jul 06 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
python动态加载包的方法小结
2016/04/18 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
python os.rename实例用法详解
2020/12/06 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
医药工作者的求职信范文
2013/09/21 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
大型会议策划方案
2014/05/17 职场文书
科技工作者先进事迹
2014/08/16 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
开学第一天的感想
2015/08/10 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
mysql部分操作
2021/04/05 MySQL