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中使用元类的教程
Apr 28 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Python Logging 日志记录入门学习
Jun 02 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
python实现ip代理池功能示例
Jul 05 Python
如何运行带参数的python脚本
Nov 15 Python
django序列化serializers过程解析
Dec 14 Python
Django后台管理系统的图文使用教学
Jan 20 Python
python实现AdaBoost算法的示例
Oct 03 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
Python编程编写完善的命令行工具
Sep 15 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
教你如何使用php session
2013/10/28 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
JQuery 弹出框定位实现方法
2010/12/02 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
javascript学习之json入门
2016/12/22 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
python sorted函数原理解析及练习
2020/02/10 Python
python 6行代码制作月历生成器
2020/09/18 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
小学爱国卫生月活动总结
2014/06/30 职场文书
小学综合实践活动总结
2014/07/07 职场文书
工程质检员岗位职责
2015/04/08 职场文书
运动会表扬稿范文
2015/05/05 职场文书
公司保密管理制度
2015/08/04 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python