说明:
最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。
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
<code>#!/usr/bin/env python</code>
<code>#coding:utf8</code>
<code> </code>
<code>import</code> <code>smtplib</code>
<code>from</code> <code>email.mime.text </code><code>import</code> <code>MIMEText</code>
<code>import</code> <code>sys</code>
<code>reload</code><code>(sys)</code>
<code>sys.setdefaultencoding(</code><code>'utf-8'</code><code>) </code><code>#重新设置字符集,默认是ascii</code>
<code>mail_host</code><code>=</code><code>"xxxxx"</code> <code>#邮件主机</code>
<code>mail_user</code><code>=</code><code>"xxxxxxx"</code> <code>#发送邮件的用户名</code>
<code>mail_pass</code><code>=</code><code>"xxxx"</code> <code>#发邮件的密码 </code>
<code>class</code> <code>Send_notice_mail(</code><code>object</code><code>):</code>
<code> </code><code>def</code> <code>__init__(</code><code>self</code><code>,migrate_date,records): </code><code>#需要两个数据 </code>
<code> </code><code>self</code><code>.migrate_date</code><code>=</code><code>migrate_date </code><code># migrate_date:时间 </code>
<code> </code><code>self</code><code>.record</code><code>=</code><code>records </code><code>#源记录中包含邮箱</code>
<code> </code><code>for</code> <code>records </code><code>in</code> <code>self</code><code>.record: </code>
<code> </code><code>self</code><code>.mail_key</code><code>=</code><code>{}</code>
<code> </code><code>self</code><code>.mail_key[</code><code>'Email'</code><code>]</code><code>=</code><code>records[</code><code>'Email'</code><code>].strip().lower()</code><code># 将邮箱名称改成小写</code>
<code> </code><code>records.update(</code><code>self</code><code>.mail_key) </code><code>#更新字典</code>
<code> </code><code>self</code><code>.__Read_Templats() </code><code>#读取模板</code>
<code> </code><code>def</code> <code>__Read_Templats(</code><code>self</code><code>):</code>
<code> </code><code>InFile </code><code>=</code> <code>open</code><code>(</code><code>"qianyi_before.html"</code><code>,</code><code>"rb"</code><code>) </code><code>#读取html模板</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>str_text</code><code>=</code><code>''</code>
<code> </code><code>all_the_text </code><code>=</code> <code>InFile.readlines() </code><code>#读取文件生成一个列表</code>
<code> </code><code>for</code> <code>text </code><code>in</code> <code>all_the_text:</code>
<code> </code><code>str_text</code><code>+</code><code>=</code><code>text.strip() </code><code>#去除多余的行空格</code>
<code> </code><code>finally</code><code>:</code>
<code> </code><code>InFile.close()</code>
<code> </code><code>str_record</code><code>=</code><code>''</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>self</code><code>.record:</code>
<code> </code><code>#print self.record</code>
<code> </code>
<code> </code><code>if</code> <code>i.has_key(</code><code>'Name_Server'</code><code>): </code><code>#此处由于业务需要,源记录里可能只能用户信息,而无数据</code>
<code> </code><code>if</code> <code>len</code><code>(i[</code><code>'Name_Server'</code><code>])></code><code>4</code><code>:</code>
<code> </code><code>ns_name</code><code>=</code><code>'.'</code><code>.join(i[</code><code>'Name_Server'</code><code>].split(</code><code>'|'</code><code>)[</code><code>1</code><code>:][</code><code>0</code><code>].split(</code><code>'.'</code><code>)[</code><code>1</code><code>:])</code>
<code> </code><code>if</code> <code>ns_name</code><code>=</code><code>=</code><code>'xxxxx'</code> <code>or</code> <code>ns_name</code><code>=</code><code>=</code><code>'xxxxx'</code><code>:</code>
<code> </code><code>i[</code><code>'Name_Server'</code><code>]</code><code>=</code><code>"xxxxx"</code><code>.encode(</code><code>"GBK"</code><code>)</code>
<code> </code><code>str_record</code><code>+</code><code>=</code><code>'<tr><td>'</code><code>+</code><code>i[</code><code>'Web_Nu'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Domain'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Name_Server'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'New_Ip'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>"系统自动修改"</code><code>.encode(</code><code>"GBK"</code><code>)</code><code>+</code><code>'</td></tr>'</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>i[</code><code>'Name_Server'</code><code>]</code><code>=</code><code>i[</code><code>'Name_Server'</code><code>].split(</code><code>'|'</code><code>)[</code><code>1</code><code>:][</code><code>0</code><code>]</code>
<code> </code><code>str_record</code><code>+</code><code>=</code><code>'<tr><td>'</code><code>+</code><code>i[</code><code>'Web_Nu'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Domain'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Name_Server'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'New_Ip'</code><code>]</code><code>+</code><code>'</td><td style="color: #f00;">'</code><code>+</code><code>"需要人工修改"</code><code>.encode(</code><code>"GBK"</code><code>)</code><code>+</code><code>'</td></tr>'</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>str_record</code><code>+</code><code>=</code><code>'<tr><td>'</code><code>+</code><code>i[</code><code>'Web_Nu'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Domain'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'Name_Server'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'New_Ip'</code><code>]</code><code>+</code><code>'</td><td style="color: #f00;">'</code><code>+</code><code>"需要人工修改"</code><code>.encode(</code><code>"GBK"</code><code>)</code><code>+</code><code>'</td></tr>'</code>
<code> </code><code>XML</code><code>=</code><code>str_text.replace(</code><code>"opt_time"</code><code>,</code><code>self</code><code>.migrate_date) </code><code>#将组合的数据替换模板的变量</code>
<code> </code><code>XML</code><code>=</code><code>XML.replace(</code><code>"web_info"</code><code>,str_record)</code>
<code> </code><code>self</code><code>.html_text </code><code>=</code> <code>XML.decode(</code><code>"GBK"</code><code>) </code><code>#对模板解码</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>str_record</code><code>+</code><code>=</code><code>'<tr><td>'</code><code>+</code><code>i[</code><code>'Web_Nu'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>'</td><td>'</code><code>+</code><code>'</td><td>'</code><code>+</code><code>i[</code><code>'New_Ip'</code><code>]</code><code>+</code><code>'</td><td>'</code><code>+</code><code>'</td></tr>'</code>
<code> </code><code>XML</code><code>=</code><code>str_text.replace(</code><code>"opt_time"</code><code>,</code><code>self</code><code>.migrate_date)</code>
<code> </code><code>self</code><code>.html_text </code><code>=</code> <code>XML.decode(</code><code>"GBK"</code><code>)</code>
<code> </code><code>#print self.migrate_date</code>
<code> </code>
<code> </code><code>def</code> <code>get_content_info(</code><code>self</code><code>):</code>
<code> </code><code>return</code> <code>self</code><code>.html_text </code><code>#获取替换后模板数据</code>
<code> </code><code>def</code> <code>send_mail_opt(</code><code>self</code><code>,sub,content): </code>
<code> </code><code>#print "go send_mail......................"</code>
<code> </code><code>me</code><code>=</code><code>"xxxx"</code><code>.encode(</code><code>"GBK"</code><code>)</code><code>+</code><code>"<"</code><code>+</code><code>mail_user</code><code>+</code><code>">"</code> <code>#发信人 </code>
<code> </code><code>msg </code><code>=</code> <code>MIMEText(content,</code><code>'html'</code><code>,</code><code>'GBK'</code><code>)</code><code>#消息格式与编码 </code>
<code> </code><code>msg[</code><code>'Subject'</code><code>] </code><code>=</code> <code>sub </code><code>#主题</code>
<code> </code><code>msg[</code><code>'From'</code><code>] </code><code>=</code> <code>me </code>
<code> </code><code>msg[</code><code>'To'</code><code>] </code><code>=</code> <code>self</code><code>.mail_key[</code><code>'Email'</code><code>] </code><code>#收信人 </code>
<code> </code>
<code> </code><code>#print 'xxx',self.mail_key['Email']</code>
<code> </code><code>try</code><code>: </code>
<code> </code><code>server </code><code>=</code> <code>smtplib.SMTP() </code>
<code> </code><code>server.connect(mail_host) </code>
<code> </code><code>server.login(mail_user,mail_pass) </code>
<code> </code><code>#print "xxxxxxx",self.mail_key['Email'] </code>
<code> </code><code>server.sendmail(me, </code><code>self</code><code>.mail_key[</code><code>'Email'</code><code>], msg.as_string()) </code>
<code> </code><code>server.close() </code>
<code> </code><code>with </code><code>open</code><code>(</code><code>'/home/migrate/mail_records/mail_list.txt'</code><code>,</code><code>'a'</code><code>) as ml:</code>
<code> </code><code>ml.write(</code><code>self</code><code>.mail_key[</code><code>'Email'</code><code>]</code><code>+</code><code>'\n'</code><code>)</code>
<code> </code><code>return</code> <code>True</code>
<code> </code><code>except</code> <code>Exception, e: </code>
<code> </code><code>return</code> <code>False</code>
<code>migrate_date</code><code>=</code><code>'2015-07-04'</code>
<code>d</code><code>=</code><code>[{</code><code>'Phone'</code><code>: </code><code>'1233333'</code><code>,</code><code>'Web_Nu'</code><code>: </code><code>'wexsde333'</code><code>, </code><code>'Email'</code><code>: </code><code>'[email protected]'</code><code>}, {</code><code>'Domain'</code><code>: </code><code>'www.kedie.com'</code><code>, </code><code>'Name_Server'</code><code>: </code><code>'|xxxxx.com.cn'</code><code>, </code><code>'Dns_Ip'</code><code>: </code><code>'xxxxxxxx'</code><code>, </code><code>'Phone'</code><code>: </code><code>'19999999'</code><code>, </code><code>'Old_Ip'</code><code>: </code><code>'1.1.1.1'</code><code>, </code><code>'New_Ip'</code><code>:</code><code>'2.2.2.2'</code><code>, </code><code>'Web_Nu'</code><code>: </code><code>'webspnc'</code><code>, </code><code>'Email'</code><code>: </code><code>'[email protected]'</code><code>}]</code>
<code>s</code><code>=</code><code>Send_notice_mail(migrate_date,d)</code>
<code>type_html</code><code>=</code><code>s.get_content_info()</code>
<code>#print type_html</code>
<code>s.send_mail_opt(</code><code>"xxxxxxxxxx"</code><code>.encode(</code><code>"GBK"</code><code>),type_html)</code>
用到的模块:
import smtplib #以登录的方式发邮件,如果非登录的方式可能被对方认为垃圾邮件被拒
from email.mime.text import MIMEText 源数据类型的定义
ps:虽然写的很渣,但总算将功能实现了,不说了,继续后模块了,学习python不看标准库,学了一点用都没有。。。
本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1671937,如需转载请自行联系原作者