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

如何用Python在Amazon SES邮件中显示未缩写的POST值全称

实现方案

完全可以通过字典映射的方式完成套餐缩写到完整名称的转换,不需要调整现有DynamoDB存储结构,代码改动量很小。

具体实现步骤

  • 定义映射字典
    在代码中维护一份套餐缩写和展示名称的对应关系,和前端表单的选项保持一一对应即可,后续新增套餐只需要同步更新这个字典:
# 套餐缩写 -> 邮件展示完整名称 映射表
PACKAGE_MAP = {
    "ntw": "Networking Package",
    "drnk": "Drinks Package",
    "food": "Food Package"
}
  • 发送邮件前做值转换
    在组装SES模板参数时,从字典中取出缩写对应的完整名称,加上兜底逻辑避免遇到未收录的缩写值导致程序报错。

额外提示:原代码用字符串拼接生成JSON参数的方式存在稳定性风险,如果用户名等字段包含双引号、反斜杠等特殊字符,会导致JSON格式解析失败,推荐用Python标准库json.dumps()自动完成特殊字符转义。

修改后的完整可运行代码如下:

import os
import json

PACKAGE_MAP = {
    "ntw": "Networking Package",
    "drnk": "Drinks Package",
    "food": "Food Package"
}

def send_email_matched(email1, name1, email2, name2, package, client):
    senderAddress = os.environ["senderAddress"]
    # 取完整套餐名,若映射不存在则兜底使用原始缩写值
    display_package = PACKAGE_MAP.get(package, package)

    # 自动生成标准JSON格式模板参数,处理特殊字符转义
    template_payload = {
        "first_name1": name1,
        "first_name2": name2,
        "package": display_package
    }

    response = client.send_templated_email(
        Source=senderAddress,
        Destination={
            'ToAddresses': [email1, email2],
            'CcAddresses': [senderAddress]
        },
        Template='XXXXXXX',
        TemplateData=json.dumps(template_payload)
    )
    return response

可选优化

如果后续套餐选项迭代频繁,不想每次修改选项都重新部署代码,可以把这份映射关系存在独立的配置存储中,比如单独的DynamoDB配置表、AWS SSM参数存储,代码运行时拉取最新映射即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:01:12