说明:
最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。
#!/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(‘|‘)[1:][0].split(‘.‘)[1:]) 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(‘|‘)[1:][0] 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‘: ‘[email protected]‘}, {‘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‘: ‘[email protected]‘}] 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)
用到的模块:
import smtplib #以登录的方式发邮件,如果非登录的方式可能被对方认为垃圾邮件被拒
from email.mime.text import MIMEText 源数据类型的定义
ps:虽然写的很渣,但总算将功能实现了,不说了,继续后模块了,学习python不看标准库,学了一点用都没有。。。
时间: 2024-10-13 19:24:28