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 命令行也可以自动补全
Nov 30 Python
用Python实现KNN分类算法
Dec 22 Python
python表格存取的方法
Mar 07 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
python基于SMTP协议发送邮件
May 31 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python字符串判断密码强弱
Mar 18 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
python如何将图片转换素描画
Sep 08 Python
python 进程池pool使用详解
Oct 15 Python
python中pivot()函数基础知识点
Jan 03 Python
python之np.argmax()及对axis=0或者1的理解
Jun 02 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操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
JS实现手风琴特效
2020/11/08 Javascript
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
python 实现端口扫描工具
2020/12/18 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
部队领导证婚词
2014/01/12 职场文书
销售经理岗位职责
2014/03/16 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
一年级学生评语
2014/04/23 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
让子弹飞观后感
2015/06/11 职场文书
观后感开头
2015/06/19 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
golang json数组拼接的实例
2021/04/28 Golang