【问题标题】:Lua: Remove field from mail headerLua:从邮件标题中删除字段
【发布时间】:2017-08-07 21:07:29
【问题描述】:

我想从 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”开头的字段时。主要问题是多行字段。

【问题讨论】:

    标签: string lua lua-patterns


    【解决方案1】:

    试试

    string.gsub(header ,"%f[^\n%z]Re.-\n%f[%S]", "")
    

    【讨论】:

      【解决方案2】:

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

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

      进行您想要的编辑。完成后,根据需要恢复多行字段:

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

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

      【讨论】:

      • 第一个命令在我运行时确实删除了一些行并且不合并行?邮件头中有没有没有使用的字符?
      猜你喜欢
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多