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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
在Python中使用next()方法操作文件的教程
May 24 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
Python装饰器用法实例分析
Jan 14 Python
Python文件读写常见用法总结
Feb 22 Python
Python 实现交换矩阵的行示例
Jun 26 Python
python 实现客户端与服务端的通信
Dec 23 Python
PyCharm常用配置和常用插件(小结)
Feb 06 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php中文件上传的安全问题
2006/10/09 PHP
PHP实现分页的一个示例
2006/10/09 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
python操作mysql数据库
2017/03/05 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
python关于倒排列的知识点总结
2020/10/13 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
西式婚礼证婚词
2014/01/12 职场文书
老师给学生的表扬信
2014/01/17 职场文书
将相和教学反思
2014/02/04 职场文书
中考标语大全
2014/06/05 职场文书
技术股份合作协议书
2014/10/05 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
2015年党员自评材料
2014/12/17 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL