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

如何解析入站邮件body_text,提取跨换行的键值对并格式化输出

邮件正文键值对提取解决方案

问题根因

  • 你所使用的正则仅支持匹配键与值在同一行的文本,但待解析的原始邮件内容中,键(带冒号的字段名)和对应值分两行存储,还夹杂大量空行,导致原有正则匹配不到有效内容。

修复后代码

var emailObj = {};

try {
    // 预处理:拆分内容为行,过滤空行、每行去除首尾空格
    var validLines = body_text.split("\n")
                    .map(line => line.trim())
                    .filter(line => line.length > 0);

    for (var i = 0; i < validLines.length; i++) {
        var currentLine = validLines[i];
        // 识别键行:包含冒号的行即为字段名行
        if (currentLine.includes(":")) {
            var key = currentLine.split(":")[0].trim();
            var value = "";
            // 兼容两种情况:键值同行 / 键值分行
            var sameLineValue = currentLine.split(":")[1].trim();
            if (sameLineValue) {
                value = sameLineValue;
            } else if (i + 1 < validLines.length && !validLines[i+1].includes(":")) {
                value = validLines[i+1].trim();
                // 跳过已取值的下一行,避免重复判断
                i++;
            }
            emailObj[key] = value;
        }
    }

    // 如需要输出指定格式的拼接文本,可使用以下代码
    var formatOutput = Object.entries(emailObj).map(([key, val]) => `${key}: ${val}`).join("\n");
    console.log(formatOutput);
    console.log(emailObj);
} catch (ex) {
    gs.error(ex.message);
}

效果验证

使用你提供的原始内容测试,运行后输出的formatOutput刚好符合你要求的格式:

Employee Start Date: 2021/09/07
Employee ID: 123456789
Employee Preferred Name: John Doe
Employee Company: Global

同时生成的emailObj对象可以直接调用对应字段取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:45:03