使用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,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
89 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
4月前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
104 7
|
3月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
130 4
|
4月前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
156 9
|
3月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
146 0
|
5月前
|
XML 前端开发 数据格式
Beautiful Soup 解析html | python小知识
在数据驱动的时代,网页数据是非常宝贵的资源。很多时候我们需要从网页上提取数据,进行分析和处理。Beautiful Soup 是一个非常流行的 Python 库,可以帮助我们轻松地解析和提取网页中的数据。本文将详细介绍 Beautiful Soup 的基础知识和常用操作,帮助初学者快速入门和精通这一强大的工具。【10月更文挑战第11天】
125 2
|
6月前
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
320 12
|
7月前
|
Python
Python 下载 html 中的 图片
Python 下载 html 中的 图片
76 2
|
8月前
|
数据采集 自然语言处理 大数据
​「Python大数据」词频数据渲染词云图导出HTML
使用Python,本文展示数据聚类和办公自动化,焦点在于通过jieba分词处理VOC数据,构建词云图并以HTML保存。`wordCloud.py`脚本中,借助pyecharts生成词云,如图所示,关键词如&quot;Python&quot;、&quot;词云&quot;等。示例代码创建了词云图实例,添加词频数据,并输出到&quot;wordCloud.html&quot;。
164 1
​「Python大数据」词频数据渲染词云图导出HTML
|
8月前
|
监控 网络协议 网络安全
SMTP操作使用详解并通过python进行smtp邮件发送示例
SMTP操作使用详解并通过python进行smtp邮件发送示例
219 3