python 发邮件 动态html_使用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('|')[1:][0].split('.')[1:])

if ns_name=='xxxxx' or ns_name=='xxxxx':

i['Name_Server']="xxxxx".encode("GBK")

str_record+='

'+i['Web_Nu']+''+i['Domain']+''+i['Name_Server']+''+i['New_Ip']+''+"系统自动修改".encode("GBK")+''

else:

i['Name_Server']=i['Name_Server'].split('|')[1:][0]

str_record+='

'+i['Web_Nu']+''+i['Domain']+''+i['Name_Server']+''+i['New_Ip']+''+"需要人工修改".encode("GBK")+''

else:

str_record+='

'+i['Web_Nu']+''+i['Domain']+''+i['Name_Server']+''+i['New_Ip']+''+"需要人工修改".encode("GBK")+''

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+='

'+i['Web_Nu']+''+''+''+i['New_Ip']+''+''

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")+"" #发信人

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)

用到的模块:

import smtplib #以登录的方式发邮件,如果非登录的方式可能被对方认为垃圾邮件被拒

from email.mime.text import MIMEText 源数据类型的定义

ps:虽然写的很渣,但总算将功能实现了,不说了,继续后模块了,学习python不看标准库,学了一点用都没有。。。

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页