很久很久以前的事情了,今天整理发现一团代码,扔生来吧
花了很多搞了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>
仅作参考,仅作收藏,不惜勿喷