You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

供不同用户跨设备运行的Python程序如何使用环境变量存储敏感凭证

可行实现方案

以下三个方案均支持跨Windows/Linux系统运行,不会在代码中硬编码邮箱凭证,符合你的需求:

方案1:使用.env配置文件(推荐,开发/评分体验最优)

该方案可以几乎保留你现有环境变量读取逻辑,仅需增加配置文件加载步骤:

  • 首先安装python-dotenv依赖库,执行命令:pip install python-dotenv
  • 在项目根目录新建.env文件,写入你的凭证内容:
DB_USER=你的邮箱地址
DB_PASS=你的邮箱授权码
  • 修改原有代码,在读取环境变量前加载.env文件,修改后参考代码如下:
import os
import smtplib
import email.utils
from email.message import EmailMessage
from dotenv import load_dotenv

# 加载同目录下的.env配置文件
load_dotenv()

def send_email():
    EMAIL_ADDRESS = os.environ.get('DB_USER')
    EMAIL_PASSWORD = os.environ.get('DB_PASS')

    contacts = [EMAIL_ADDRESS, 'secondemail@email.com']

    msg = EmailMessage()
    msg['From'] = EMAIL_ADDRESS
    msg['To'] = ', '.join(contacts)
    msg['Subject'] = 'HEY YOU!'
    msg['Date'] = email.utils.localtime()
    msg.set_content('Yeah you!')

    files = ['filename.log']
    for file in files:
        # 修复原代码硬编码文件名的问题
        with open(file, 'rb') as f:
            file_data = f.read()
            file_name = f.name
        msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)

提交作业时将.env文件和代码一起打包,同时在作业说明中注明需要先安装python-dotenv依赖即可。该方式实现了凭证和业务代码完全分离,符合你不硬编码的要求。建议使用邮箱服务商提供的应用专用密码,后续如果出现泄露可以单独撤销权限,不会影响邮箱主账号安全。

方案2:运行时临时注入环境变量(无额外依赖)

该方案不需要修改你的现有代码,只需要在作业说明中给导师提供对应系统的运行命令即可:

  • Windows系统运行命令:
set DB_USER=你的邮箱地址 && set DB_PASS=你的邮箱授权码 && python 你的脚本文件名.py
  • Linux系统运行命令:
DB_USER=你的邮箱地址 DB_PASS=你的邮箱授权码 python 你的脚本文件名.py

该方式不需要安装额外依赖,也不会将凭证写入本地配置文件,适合不允许提交额外配置文件的场景。

方案3:加密配置文件(安全性最高)

如果担心明文配置文件泄露,可以使用对称加密方式加密凭证后写入代码,运行时通过密钥解密:

  • 提前用加密工具将你的邮箱凭证加密得到密文,将密文写入代码
  • 运行代码时通过命令行参数输入解密密钥(密钥可以单独写在作业说明中)
  • 代码运行时动态解密得到凭证,只有同时拿到代码和密钥才能获取真实凭证,安全性最高,适合对安全要求较高的场景。
注意事项
  • 优先使用邮箱的应用专用密码,不要直接使用邮箱主密码,降低账号安全风险
  • 原示例代码中遍历附件列表时存在硬编码文件名的问题,已在方案1的示例代码中修复

内容的提问来源于stack exchange,提问作者user16313342

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:54:06