使用python发送html邮件

说明:

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

#!/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‘: ‘[email protected]‘}, {‘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‘: ‘[email protected]‘}]
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不看标准库,学了一点用都没有。。。

时间: 2024-10-13 19:24:28

使用python发送html邮件的相关文章

python 发送html邮件

简单的python发送html邮件代码,如下: #!/usr/bin/env python #-*- coding:utf-8 -*- import smtplib from email.header import Header from email.MIMEText import MIMEText from email.mime.multipart import MIMEMultipart ####################################################

使用python发送QQ邮件

这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”.使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去. MIMEText 对象 msg 包括收发邮箱地址.邮件正文和主题,Python 通过它就可以创建一封格式正

python 发送qq邮件

# coding=utf-8import smtplibfrom email.mime.text import MIMETextimport email def sen(file_new): msg_from = '[email protected]' # 发送方邮箱 passwd = 'xthwzlXXX' # 填入发送方邮箱的授权码 msg_to = '[email protected]' # 收件人邮箱 subject = "python邮件测试" # 主题 content =

python 发送安全邮件

用python 写了一个发送邮件的脚本,配上host 和端口,发现一直报错: smtplib.SMTPException: No suitable authentication method found. 回头又看了下发送邮件服务器的配置说明,发现发送邮件服务器用的加密协议是:STARTTLS(即所谓的安全邮件),而smtplib支持ttls需要添加一行命令, 为了验证是否是此问题导致,将邮件设置为了调式模式,发现返回结果里确实有如下信息:reply: '250-STARTTLS\r\n',于是

python发送各类邮件的主要方法

python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点.     一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执

python发送网易邮件

无附件 from smtplib import SMTP from email.header import Header from email.mime.text import MIMEText def main(): sender = '1355***[email protected]' receivers = '1047**[email protected]' message = MIMEText('用python发送邮件的实例代码','plain','utf-8') message['Su

python发送文本邮件

1 #!/usr/bin/env python 2 #coding=utf-8 3 #Author: Ca0Gu0 4 import time 5 import smtplib 6 from email.mime.text import MIMEText 7 8 class MailCli(object): 9 def __init__(self): 10 self.s = smtplib.SMTP() #类实例化 11 12 def connect(self, host=None, port=

python 发送QQ邮件的小例子

首先QQ邮件用第三方客户端发送要申请验证码.而不是QQ的密码. 授权码就是你接下来登录要使用的密码 那么剩下的工作就很简单了.附简单代码如下: #coding:utf-8 import smtplib from email.mime.text import MIMEText _user = "[email protected]" _pwd = "12341234134" #用授权码 _to = "[email protected]" msg =

python发送QQ邮件

#encoding=utf-8 __author__ = 'ds' #文件名称冲突 from email.mime.text import MIMEText import smtplib if __name__ == '__main__': msg = MIMEText(_text='SMTP test', _charset='utf-8') #输入Email地址和口令: from_addr = '[email protected]' password = 'XXX' # 输入SMTP服务器地址