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 相关文章推荐
通过C++学习Python
Jan 20 Python
Python中http请求方法库汇总
Jan 06 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
python difflib模块示例讲解
Sep 13 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
解决python3中os.popen()出错的问题
Nov 19 Python
如何用Python和JS实现的Web SSH工具
Feb 23 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 EOT定界符的使用详解
2008/09/30 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
很可爱的输入框
2008/08/03 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
express express-session的使用小结
2018/12/12 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
python控制台显示时钟的示例
2014/02/24 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python3实现基于用户的协同过滤
2018/05/31 Python
如何用Python合并lmdb文件
2018/07/02 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
wxPython实现画图板
2020/08/27 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
python 带时区的日期格式化操作
2020/10/23 Python
python实现网页录音效果
2020/10/26 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
班主任班级寄语大全
2014/04/04 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
十佳家长事迹材料
2014/08/26 职场文书
2014国庆节标语口号
2014/09/19 职场文书
初中优秀学生评语
2014/12/29 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server