python 发送邮件,支持邮件内容定义

很久很久以前的事情了,今天整理发现一团代码,扔生来吧


花了很多搞了gerrit 服务docker化, 账户添加完毕,老大说你给他们每个人发个邮件通知,另外把邮件内容写的漂亮点,格式化一下,顺便把使用向导镐一下,使用向导中直接使用目标的用户名密码.....---囧.....几十号人,挨个发邮件,顺便把用户名密码更新一进去,死人的会.

功能:

1:从邮件用户名列表读取用户名和密码

2: 载入邮件header信息

3: 载入email内容信息,并替换其中的关键字为对应的用户名和密码

so ,写个代码吧, 


载入一个邮件模板,然后替换其中的用户名密码标志,按照用户名挨个发呗..

直接贴代码了

发送代码:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#导入smtplib和MIMEText
import smtplib
from email.mime.text import MIMEText
import  base64
import sys
from optparse import OptionParser
import codecs
import time

mailto_list=["bright.jiang@infotm.com","sam.zhou@infotm.com"]

########smtp setting#############
mail_host="smtp.exmail.qq.com"
mail_user="xxx@xxx.com"
mail_pass="xxx"
mail_postfix="xxx.com"
######################
def send_mail(to_list,sub,content,type='html'):
    '''
    to_list:发给谁
    sub:主题
    content:内容
    send_mail("aaa@126.com","sub","content")
    '''
    me=mail_user+"<"+mail_user+">"
    msg = MIMEText(content,_subtype=type,_charset='UTF-8')
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = ";".join(to_list)
    try:
        s = smtplib.SMTP()
        print("@@!@@")
        print s.connect(mail_host)
        print("@@!@@")
        print s.login(mail_user,mail_pass)
        print("@@!@@")
        s.sendmail(me, to_list, msg.as_string())

        s.close()
        return True
    except Exception, e:
        print("@@!@@")
        print str(e)
        return False
def get_email_title(file) :
    try :
        fd = codecs.open(file,'r','UTF-8')
        data =  fd.read()
        fd.close()
    except :
        print("read mail title error")
        sys.exit(0)
    return data
def get_email_content_template(file) :
    try :
        fd = open(file,'r')
        data =  fd.read()
        fd.close()
    except :
        print("read mail content error")
        sys.exit(0)
    return data
def get_user_list(file):
    try :
        fd = open(file,'r')
        data =  fd.readlines()
        fd.close()
        print(type(data) )
    except :
        print("read user list error")
        sys.exit(0)
    userPass = []
    for line in data :  
        if len(line) == 0 :
            break
        if line[0] in ['#',' ','\n'] :
            continue
        userPass.append(line.split() )
    return userPass
def update_email_from_template(template,userPass):
    print(type(userPass[0]))
    temp= userPass[0].split(".")
    big_name = "".join([temp[0][0:1].upper(),temp[0][1:]," ",temp[1][0:1].upper(),temp[1][1:] ] )
    print(big_name)
    template = template.replace("##USER_NAME",userPass[0]).replace("##USER_PASS",userPass[1]).replace("##USER_FULL",big_name)
    return template
if __name__ == '__main__':
    parser = OptionParser(usage="usage:%prog [optinos] filepath")
    parser.add_option("-u", "--userfile",
                    action = "store",
                    type = 'str',
                    dest = "userFile",
                    default = "user.lst",
                    help="user list file ,will delete all users not include in the file and update the password in the file"
                    )

    parser.add_option("-t", "--title",
                    action = "store",
                    type = 'str',
                    dest = "title",
                    default = "title.t",
                    help = "email tile template"
                    )
    parser.add_option("-c", "--content",
                    action = "store",
                    type = 'str',
                    dest = "content",
                    default = "mail.t",
                    help = "mail content template"
                    )
    (options, args) = parser.parse_args()
    userList = get_user_list(options.userFile)
    print (userList)

    mail_title =  get_email_title(options.title)
    mail_content = get_email_content_template(options.content)
    for user in userList :
        print user
        send_user =  "%s@infotm.com"%(user[0])
        content = update_email_from_template(mail_content,user)
##        break
        print('begin send')
        if send_mail([send_user ],mail_title,content):
            print "send to %s  ok" %(user[0])
        else:
            print "send to %s  fail" %(user[0])

收件人列表:

#user password file ,just edit it ,will update new password to the passwd file
#format :user  password  ,no space in the start char
#left password empty ,will generate randon password
#tools developed by Bright.Jiang
#
#BSP leader
#
warits.wang           236890 
#
#BSP
#
bright.jiang          098765 
#sam.zhou 			 099032

邮件主题:

Gerrit服务器升级通知


邮件内容:

<p>
    Dear All :     
</p>
<p>
           为提升Gerrit服务器稳定性以及满足空间的需求,我们将从<span style="color: rgb(255, 0, 0);">11月16日(下周一)</span>开始统一切换到新服务器。新服务器的代码为旧服务器11/14日最新的版本。为保证代码统一,原服务器将同时停用。届时请大家花几分钟时间重新配置自已的Gerrit环境。
</p>
<p>
         
</p>
<p class="MsoListParagraph">
           1. 使用以下用户名和密码登录新的Gerrit服务器: <a moz-do-not-send="true" href="http://gerrit.in.infotm.com/">http://gerrit.in.infotm.com</a> .
</p>
<p class="MsoListParagraph">
               新的用户名密码为:<strong><em><span style="color:#E53333">  </span></em><span style="color:#E53333">##USER_NAME</span></strong>             <span style="color: rgb(229, 51, 51);">##USER_PASS</span>      
</p>
<p class="MsoListParagraph">
           2. 点击右上角<strong>Anonymous Coward</strong> -> <strong>Settings</strong> -> <strong>Contact  Information</strong>,添写自己的个人信息,如<span style="color: rgb(255, 0, 0);"><strong>##USER_FULL</strong></span>,(统一格式:英文名空格姓,首字母大写)。点击<strong>Register New Email</strong>,添写自己的邮箱:<strong><span style="color: rgb(255, 0, 0);">##USER_NAME</span></strong><span style="color: rgb(255, 0, 0);">@</span><strong><span style="color: rgb(255, 0, 0);">infotm.com</span></strong><strong style="white-space: normal;"><span style="color: rgb(255, 0, 0);">  </span></strong>(注意,请使用公司新邮箱),最后点击<strong>Save Changes</strong>
</p>
<p class="MsoListParagraph">
           3.  添加SSH Public Key,左边选则<strong>SSH Public Keys</strong>,执行命令 
</p>
<p class="MsoListParagraph">
                $cat ~/.ssh/id_rsa.pub 
</p>
<p class="MsoListParagraph">
                复制全部内容到gerrit ssh key文本框中,点击<strong>Add</strong>。 如果没有id_rsa.pub,使用以下命令生成:<em> </em>
</p>
<p class="MsoListParagraph">
                $ ssh-keygen -t rsa  -C "<strong><span style="color:#E53333">##USER_NAME</span></strong><span style="color: rgb(255, 0, 0);">@</span><strong><span style="color:#ff0000">infotm.com</span></strong>"
</p>
<p class="MsoListParagraph">
           4.  修改本地git配置:
</p>
<p class="MsoListParagraph">
    <em>             </em>$ git config --global user.name   "<strong><span style="color: rgb(255, 0, 0);">##USER_NAME</span></strong>"
</p>
<p class="MsoListParagraph">
                 $ git config --global user.email  "<strong><span style="color: rgb(255, 0, 0);">##USER_NAME</span></strong><span style="color: rgb(255, 0, 0);">@</span><strong><span style="color: rgb(255, 0, 0);">infotm.com</span></strong>"    <span style="background-color: rgb(248, 248, 248);">  </span>
</p>
<p class="MsoListParagraph">
           5.  更新本地repo,需要使用新的repo地址重新repo init , 常用的repo地址可以从Wiki上检索:<a href="http://wiki.in.infotm.com/doku.php?id=internal_document:department:scheme:%E5%B8%B8%E7%94%A8%E4%BB%A3%E7%A0%81%E8%8E%B7%E5%8F%96" target="_blank" title="常用Repo地址">常用Repo地址</a>
</p>
<p class="MsoListParagraph">
     
</p>
<p class="MsoListParagraph">
           6.  常见的repo使用的错误,也会在wiki上不定期更新,欢迎各位参阅和修订,也欢迎 大家把工作中的经验总结更新到<a href="http://wiki.in.infotm.com" target="_blank" title="Wiki">Wiki页面</a>。
</p>
<p class="MsoListParagraph">
    <br/>
</p>
<p class="MsoListParagraph">
    Enjoy It!
</p>
<p class="MsoListParagraph">
    Gerrit Admin
</p>



仅作参考,仅作收藏,不惜勿喷



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值