最近在頭疼一件事,做編程的小伙伴的愿景是:能用腳本說(shuō)話的堅(jiān)決不手動(dòng)K跬帷!匪蝙!比如說(shuō)發(fā)郵件。在我之前的一封簡(jiǎn)書中有寫到發(fā)送郵件的python腳本逛球。但是這個(gè)腳本暴露了一個(gè)缺點(diǎn),就是腳本中有個(gè)人信息颤绕,特別是郵箱的密碼祟身!這個(gè)不能有。物独。。
之前的腳本簡(jiǎn)書地址為http://www.reibang.com/p/eaaaa6ef9cff
而且婉陷,還有一點(diǎn)就是,帶個(gè)人信息的腳本通用性很低官研,因此本次簡(jiǎn)書中要解決的問(wèn)題有兩個(gè):
1:在腳本中不能出現(xiàn)個(gè)人信息。
2:實(shí)現(xiàn)腳本的通用性阀参。
在這里,我的想法是:一般情況下個(gè)人的home目錄其他人是沒(méi)有訪問(wèn)權(quán)限的蛛壳,因此我們可以將個(gè)人信息配置在該目錄底下。而且就算是在腳本中將個(gè)人信息打印出來(lái)衙荐,打印的也是當(dāng)前用戶的信息。所以很安全忧吟。
第一步:設(shè)置配置文件
在home目錄下創(chuàng)建一個(gè)文件夾,用于存放配置文件溜族。腳本如下:
mkdir .mail
cd .mail
第二步:編寫配置文件
賬戶及郵箱的相關(guān)配置:
[Account]
mail_user = ***@qq.com
mail_pass = ************
mail_host = smtp.exmail.qq.com ##騰訊郵箱的協(xié)議
usr_name = 姓名 ##發(fā)送郵件時(shí)的簽名,如果需要設(shè)置簽名的話煌抒,可以把和別人不一樣的信息設(shè)置在該處
發(fā)送及抄送的相關(guān)設(shè)置:
[GC]
receivers =GC@qq.com
cc = aaa@qq.com, bbb@qq.com,xiaohongduan@qq.com,ccc@qq.com,ddd@qq.com
[BMC]
receivers =bmc@qq.comcc = ddd@qq.com, ggg@qq.com,fff@qq.com,hhh@qq.com
[TEST]
receivers =jingchen@qq.com
cc = eee@qq.com,ddd@qq.com
這里的設(shè)置考慮到可能發(fā)送不同類型的郵件時(shí),發(fā)送對(duì)象和抄送對(duì)象不一樣寡壮,因此予以設(shè)置贩疙。針對(duì)不同的郵件直接使用對(duì)應(yīng)的標(biāo)簽即可况既。
第三步:讀取配置文件
腳本如下:
import configparser
import os
class MyConfigParser(configparser.ConfigParser):
def __init__(self, defaults=None):
configparser.ConfigParser.__init__(self, defaults=defaults)
def optionxform(self, optionstr):
return optionstr
def read_config():
f_config =os.path.join(os.path.expanduser('~'),".mail") + '/config.ini'
config = MyConfigParser()
config.read(f_config)
titles = config.sections() #['database']
config_dic = {}
for t in titles:
for sub in config.options(t):
if t in config_dic:
config_dic[t].update({sub:config.get(t,sub)})
else:
config_dic.update({t:{sub:config.get(t,sub)}})
return config_dic
這里定義了一個(gè)新的MyConfigParser,是因?yàn)閏onfigparser默認(rèn)將大寫都改成小寫棒仍,因此對(duì)其重新進(jìn)行了定義。
讀取前面配置好當(dāng)前用戶home目錄下的config.ini文件降狠。存成名為config_dic的字典庇楞。
回到我之前分享的簡(jiǎn)書http://www.reibang.com/p/eaaaa6ef9cff。
mail_host = config_dic['Account']['mail_host ']
mail_user = config_dic['Account']['mail_user']
mail_pass = config_dic['Account']['mail_pass']
好了吕晌。其他的你想怎么配置就怎么配置吧~~
再提醒一次,發(fā)送郵件的腳本必須在有通信功能的服務(wù)器上進(jìn)行操作睛驳,沒(méi)有通信功能的,設(shè)置一下免密跳轉(zhuǎn)即可膜廊。
才轉(zhuǎn)python沒(méi)有多久,大家有更好的方法爪瓜,可以相互討論喲~