Lua:从邮件头中删除字段

我想在 lua 中从邮件头中删除一些字段。比如,我有一个名为“header”的字符串,我想删除所有以“Re”开头的字段。

我该怎么做?

我尝试过像这样的语句:

string.gsub(header, "\nRe.-\n[^%s]", "")

但它不起作用……

例如输入

Received: by a;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
X-Received: by b;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Return-Path: <x@example.com>
Received: from ex.com
        by mx..com
        for x
Received-SPF: pas5a;
Authentication-Results:;
       dkim=pass header.i=@;
Return-Path: <bounce-paypal.de>
MIME-Version: 1.0
Reply-To: a
Subject: b
From: c
To: xxx
Date: Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Content-Type: multipart/alternative;

应该变成

X-Received: by b;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Authentication-Results:;
       dkim=pass header.i=@;
MIME-Version: 1.0
Subject: b
From: c
To: xxx
Date: Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Content-Type: multipart/alternative;

在删除以“Re”开头的字段时,主要问题是多行字段。

点赞
用户107090
用户107090

如果问题是多行字段,则首先将它们合并为单行字段:

header = string.gsub(header ,"\n( +)", "\1%1")

完成所需的编辑后,如有需要,则恢复多行字段:

header = string.gsub(header ,"\1", "\n")

\1 只是一个占位符。您可以使用任何未在邮件标题中使用的字符。

2017-03-16 16:20:02
用户6834680
用户6834680

尝试

string.gsub(header ,"%f[^\n%z]Re.-\n%f[%S]", "")
2017-03-16 16:43:08