使用python发送html邮件

本文介绍了一个使用Python实现的业务迁移通知邮件系统。该系统能够根据业务迁移的时间和相关记录生成HTML格式的邮件内容,并自动发送给指定的接收者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:

   最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。

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 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,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值