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中处理异常的教程
May 24 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Python二元赋值实用技巧解析
Oct 25 Python
python全局变量引用与修改过程解析
Jan 07 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python如何测试stdout输出
Aug 10 Python
基于python实现操作redis及消息队列
Aug 27 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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+js实现异步图片上传实例分享
2014/06/02 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
浅述python中深浅拷贝原理
2018/09/18 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
运动会入场解说词300字
2014/01/25 职场文书
《泉水》教学反思
2014/04/11 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
小学生作文批改评语
2014/12/25 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
多人股份制合作协议书
2016/03/19 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
详解MongoDB的条件查询和排序
2021/06/23 MongoDB