使用python发送html邮件

简介:

说明:

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

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,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
存储 搜索推荐 数据安全/隐私保护
python实战讲解之使用Python批量发送个性化邮件
python实战讲解之使用Python批量发送个性化邮件
|
2月前
|
存储 安全 计算机视觉
用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
|
3月前
|
XML JavaScript 数据格式
python - bs4提取XML/HTML中某个标签下的属性
python - bs4提取XML/HTML中某个标签下的属性
28 0
|
3月前
|
存储 Shell API
Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信
Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信
|
3月前
|
移动开发 Python HTML5
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
Python办公自动化【发送普通邮件、发送HTML邮件、发送附件邮件-smtplib、批量发送邮件-smtplib、发送邮件-zmail】(八)-全面详解(学习总结---从入门到深化)
43 0
|
4月前
|
数据采集 Python
python HTML文件标题解析问题的挑战
python HTML文件标题解析问题的挑战
|
5月前
|
人工智能 安全 程序员
使用 ChatGPT 帮助小学生编程入门系列之二:使用 Python 编程发送电子邮件
使用 ChatGPT 帮助小学生编程入门系列之二:使用 Python 编程发送电子邮件
55 0
|
8月前
|
测试技术 数据安全/隐私保护 Python
Python快速上手系列--邮件发送--详解篇
Python快速上手系列--邮件发送--详解篇
99 0
|
8月前
|
网络协议 网络安全 数据安全/隐私保护