Python

设置发送邮件时不显示个人信息

2020-06-11  本文已影响0人  静小沐

最近在头疼一件事,做编程的小伙伴的愿景是:能用脚本说话的坚决不手动!!!比如说发邮件。在我之前的一封简书中有写到发送邮件的python脚本。但是这个脚本暴露了一个缺点,就是脚本中有个人信息,特别是邮箱的密码!这个不能有。。。

image.png
之前的脚本简书地址为https://www.jianshu.com/p/eaaaa6ef9cff
而且,还有一点就是,带个人信息的脚本通用性很低,因此本次简书中要解决的问题有两个:
1:在脚本中不能出现个人信息。
2:实现脚本的通用性。
在这里,我的想法是:一般情况下个人的home目录其他人是没有访问权限的,因此我们可以将个人信息配置在该目录底下。而且就算是在脚本中将个人信息打印出来,打印的也是当前用户的信息。所以很安全。
第一步:设置配置文件

在home目录下创建一个文件夹,用于存放配置文件。脚本如下:

mkdir .mail
cd .mail
第二步:编写配置文件

账户及邮箱的相关配置:

[Account]
mail_user = ***@qq.com
mail_pass = ************
mail_host = smtp.exmail.qq.com  ##腾讯邮箱的协议
usr_name = 姓名                         ##发送邮件时的签名,如果需要设置签名的话,可以把和别人不一样的信息设置在该处

发送及抄送的相关设置:

[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

这里的设置考虑到可能发送不同类型的邮件时,发送对象和抄送对象不一样,因此予以设置。针对不同的邮件直接使用对应的标签即可。

第三步:读取配置文件

脚本如下:

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

这里定义了一个新的MyConfigParser,是因为configparser默认将大写都改成小写,因此对其重新进行了定义。
读取前面配置好当前用户home目录下的config.ini文件。存成名为config_dic的字典。
回到我之前分享的简书https://www.jianshu.com/p/eaaaa6ef9cff

mail_host = config_dic['Account']['mail_host ']
mail_user = config_dic['Account']['mail_user']
mail_pass = config_dic['Account']['mail_pass']

好了。其他的你想怎么配置就怎么配置吧~~

再提醒一次,发送邮件的脚本必须在有通信功能的服务器上进行操作,没有通信功能的,设置一下免密跳转即可。

才转python没有多久,大家有更好的方法,可以相互讨论哟~

上一篇下一篇

猜你喜欢

热点阅读