美文网首页Python
设置发送邮件时不显示个人信息

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

作者: 静小沐 | 来源:发表于2020-06-11 11:21 被阅读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没有多久,大家有更好的方法,可以相互讨论哟~

    相关文章

      网友评论

        本文标题:设置发送邮件时不显示个人信息

        本文链接:https://www.haomeiwen.com/subject/onnvtktx.html