huashan8 发表于 2018-8-12 10:20:44

使用python发送html邮件

#!/usr/bin/env python  
#coding:utf8
  

  
import smtplib
  
from email.mime.text import MIMEText
  
import sys
  
reload(sys)
  
sys.setdefaultencoding('utf-8') #重新设置字符集,默认是ascii
  
mail_host="xxxxx"   #邮件主机
  
mail_user="xxxxxxx"   #发送邮件的用户名
  
mail_pass="xxxx"      #发邮件的密码
  

  
class Send_notice_mail(object):
  
def __init__(self,migrate_date,records): #需要两个数据
  
   self.migrate_date=migrate_date # migrate_date:时间
  
   self.record=records      #源记录中包含邮箱
  
   for records in self.record:
  
       self.mail_key={}
  
       self.mail_key['Email']=records['Email'].strip().lower()# 将邮箱名称改成小写
  
       records.update(self.mail_key) #更新字典
  
   self.__Read_Templats() #读取模板
  
def __Read_Templats(self):
  
    InFile = open("qianyi_before.html","rb") #读取html模板
  
    try:
  
      str_text=''
  
      all_the_text = InFile.readlines() #读取文件生成一个列表
  
      for text in all_the_text:
  
      str_text+=text.strip() #去除多余的行空格
  
    finally:
  
      InFile.close()
  
    str_record=''
  
    for i in self.record:
  
      #print self.record
  

  
      if i.has_key('Name_Server'): #此处由于业务需要,源记录里可能只能用户信息,而无数据
  
      if len(i['Name_Server'])>4:
  
         ns_name='.'.join(i['Name_Server'].split('|').split('.'))
  
         if ns_name=='xxxxx' or ns_name=='xxxxx':
  
            i['Name_Server']="xxxxx".encode("GBK")
  
            str_record+='<tr><td>'+i['Web_Nu']+'</td><td>'+i['Domain']+'</td><td>'+i['Name_Server']+'</td><td>'+i['New_Ip']+'</td><td>'+"系统自动修改".encode("GBK")+'</td></tr>'
  
         else:
  
            i['Name_Server']=i['Name_Server'].split('|')
  
            str_record+='<tr><td>'+i['Web_Nu']+'</td><td>'+i['Domain']+'</td><td>'+i['Name_Server']+'</td><td>'+i['New_Ip']+'</td><td style="color: #f00;">'+"需要人工修改".encode("GBK")+'</td></tr>'
  
      else:
  
         str_record+='<tr><td>'+i['Web_Nu']+'</td><td>'+i['Domain']+'</td><td>'+i['Name_Server']+'</td><td>'+i['New_Ip']+'</td><td style="color: #f00;">'+"需要人工修改".encode("GBK")+'</td></tr>'
  

  
      XML=str_text.replace("opt_time",self.migrate_date) #将组合的数据替换模板的变量
  
      XML=XML.replace("web_info",str_record)
  
      self.html_text = XML.decode("GBK") #对模板解码
  
      else:
  
      str_record+='<tr><td>'+i['Web_Nu']+'</td><td>'+'</td><td>'+'</td><td>'+i['New_Ip']+'</td><td>'+'</td></tr>'
  
      XML=str_text.replace("opt_time",self.migrate_date)
  
      XML=XML.replace("web_info",str_record)
  
      self.html_text = XML.decode("GBK")
  
    #print self.migrate_date
  

  
def get_content_info(self):
  
   return self.html_text#获取替换后模板数据
  
def send_mail_opt(self,sub,content):
  
    #print "go send_mail......................"
  
    me="xxxx".encode("GBK")+"<"+mail_user+">" #发信人
  
    msg = MIMEText(content,'html','GBK')#消息格式与编码
  
    msg['Subject'] = sub#主题
  
    msg['From'] = me
  
    msg['To'] = self.mail_key['Email'] #收信人
  

  
    #print 'xxx',self.mail_key['Email']
  
    try:
  
      server = smtplib.SMTP()
  
      server.connect(mail_host)
  
      server.login(mail_user,mail_pass)
  
      #print "xxxxxxx",self.mail_key['Email']
  
      server.sendmail(me, self.mail_key['Email'], msg.as_string())
  
      server.close()
  
      with open('/home/migrate/mail_records/mail_list.txt','a') as ml:
  
      ml.write(self.mail_key['Email']+'\n')
  
      return True
  
    except Exception, e:
  
      return False
  

  
migrate_date='2015-07-04'
  
d=[{'Phone': '1233333','Web_Nu': 'wexsde333', 'Email': 'xxxx@xxx.com'}, {'Domain': 'www.kedie.com', 'Name_Server': '|xxxxx.com.cn', 'Dns_Ip': 'xxxxxxxx', 'Phone': '19999999', 'Old_Ip': '1.1.1.1', 'New_Ip':'2.2.2.2', 'Web_Nu': 'webspnc', 'Email': 'xxxxx@xxx.com.cn'}]
  
s=Send_notice_mail(migrate_date,d)
  
type_html=s.get_content_info()
  
#print type_html
  
s.send_mail_opt("xxxxxxxxxx".encode("GBK"),type_html)
页: [1]
查看完整版本: 使用python发送html邮件