说明:
最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#!/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' : '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不看标准库,学了一点用都没有。。。
本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1671937,如需转载请自行联系原作者