说明:
最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。
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,如需转载请自行联系原作者