python发送邮件脚本


Posted in Python onMay 22, 2018

本文实例为大家分享了python发送邮件的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import smtplib 
import sys 
from email.mime.text import MIMEText 
import linecache 
import email 
import os 
 
 
##################### 
# set email service host,user,pass word,postfix 
mail_host="smtp.exmail.qq.com" 
mail_user="username" 
mail_pass="password" 
mail_postfix="qq.com" 
###################### 
 
def transfer_utf8_to_gb2312(file_name): 
 f=open(file_name) 
 s=f.read() 
 f.close() 
 u=s.decode("utf-8") 
 s=u.encode("gb2312") 
 f=open(file_name,"w"); 
 f.write(s) 
 
 
def send_mail(to_list,sub,content_file_name): 
 me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
 msg = email.MIMEMultipart.MIMEMultipart() 
 content = open(content_file_name.encode("utf-8"), 'rb') 
 content_msg = MIMEText(content.read(),"plain","utf-8") 
 msg.attach(content_msg) 
 msg['Subject'] = sub 
 msg['From'] = me 
 msg['To'] = ";".join(to_list) 
 try: 
  s = smtplib.SMTP() 
  s.connect(mail_host) 
  s.login(mail_user+"@"+mail_postfix,mail_pass) 
  s.sendmail(me, to_list, msg.as_string()) 
  s.close() 
  return True 
 except Exception, e: 
  print "error:",str(e) 
  return False 
 
def send_mail_with_attachment(to_list,sub,content_file_name,attachment_file_name): 
 me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
 msg = email.MIMEMultipart.MIMEMultipart() 
 content = open(content_file_name.encode("utf-8"), 'rb') 
 content_msg = MIMEText(content.read(),"plain","utf-8") 
 msg.attach(content_msg) 
 for tmp_attachment_file_name in attachment_file_name.split(","): 
  contype = 'application/octet-stream' 
  maintype, subtype = contype.split('/', 1) 
  file_data = open(tmp_attachment_file_name.encode("utf-8"), 'rb') 
  file_msg = email.MIMEBase.MIMEBase(maintype, subtype) 
  file_msg.set_payload(file_data.read()) 
  file_data.close( ) 
  email.Encoders.encode_base64(file_msg) 
  basename = os.path.basename(tmp_attachment_file_name) 
  file_msg.add_header('Content-Disposition', 'attachment', filename = basename.encode("utf-8")) 
  msg.attach(file_msg) 
 msg['Subject'] = sub 
 msg['From'] = me 
 msg['To'] = ";".join(to_list) 
 try: 
  s = smtplib.SMTP() 
  s.connect(mail_host) 
  s.login(mail_user+"@"+mail_postfix,mail_pass) 
  s.sendmail(me, to_list, msg.as_string()) 
  s.close() 
  return True 
 except Exception, e: 
  print "error:",str(e) 
  return False 
 
def print_usage(): 
  print "Usage: " 
  print "  %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name" % (sys.argv[0]) 
  print "  %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name attachment_file_name(file_name1,file_name2,...) if_transform_attachment_to_gb2312(yes or not)" % (sys.argv[0]) 
 
######Start from here######### 
if __name__ == '__main__': 
 reload(sys) 
 sys.setdefaultencoding('utf8') 
 if len(sys.argv) == 6: 
  send_list = sys.argv[1].split(",") 
  subject = unicode(sys.argv[2],"utf-8") 
  content_file_name = unicode(sys.argv[3],"utf-8") 
  attachment_file_name = unicode(sys.argv[4],"utf-8") 
  if(sys.argv[5] == "yes"): 
   transfer_utf8_to_gb2312(attachment_file_name.decode("utf-8")) 
  elif(sys.argv[5] == "not"): 
   pass 
  else: 
   print_usage() 
 
  if send_mail_with_attachment(send_list,subject,content_file_name,attachment_file_name): 
   print "Send email success!" 
  else: 
   print "Send email fail!" 
   sys.exit(1) 
 elif len(sys.argv) == 4: 
  send_list = sys.argv[1].split(",") 
  subject = unicode(sys.argv[2],"utf-8") 
  content_file_name = unicode(sys.argv[3],"utf-8") 
 
  if send_mail(send_list,subject,content_file_name): 
   print "Send email success!" 
  else: 
   print "Send email fail!" 
   sys.exit(1) 
 else: 
  print_usage()

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

Python 相关文章推荐
Python中的字典遍历备忘
Jan 17 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
使用python脚本实现查询火车票工具
Jul 19 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
python smtplib发送带附件邮件小程序
May 22 #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
You might like
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
中学生家长评语大全
2014/04/16 职场文书
奉献演讲稿范文
2014/05/21 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
网络营销计划
2015/01/17 职场文书
英语导游词
2015/02/13 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android