gpt4 book ai didi

linux - 删除页脚的 procmail 配方

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:00 25 4
gpt4 key购买 nike

我在执行 procmail 配方时遇到了一些问题。

这是我到目前为止得到的:

  :0
* ^X-Loop: myemail@gmail\.com
/dev/null

:0

# filtering email by number 60
* ^Subject:.*(60)
{
:0c:
${DEFAULT}

#trying to take out input from the body
:0fb
| head -10

#Forward it to the other folder
:0
mytest/
}

当 procmail 读取电子邮件正文时出现问题。它将显示如下输出:

   +96szV6aBDlD/F7vuiK8fUYVknMQPfPmPNikB+fdYLvbwsv9duz6HQaDuwhGn6dh9w2U
1sABcykpdyfWqWhLt5RzCqppYr5I4yCmB1CNOKwhlzI/w8Sx1QTzGT32G/ERTlbr91BM VmNQ==
MIME-Version: 1.0
Received: by 10.52.97.41 with SMTP id dx9mr14500007vdb.89.1337845760664; Thu,
24 May 2012 00:49:20 -0700 (PDT)
Received: by 10.52.34.75 with HTTP; Thu, 24 May 2012 00:49:20 -0700 (PDT)
Date: Thu, 24 May 2012 15:49:20 +0800
Message-ID: <CAE1Fe-r4Lid+YSgFTQdpsniE_wzeGjETWLLJJxat+HK94u1=AQ@mail.gmail.com>
Subject: 60136379500
From: my email <my email@gmail.com>
To: your email <your email@gmail.com>
Content-Type: multipart/alternative; boundary=20cf307f380654240604c0c37d07

--20cf307f380654240604c0c37d07
Content-Type: text/plain; charset=ISO-8859-1

hi
there
how
are
you

--20cf307f380654240604c0c37d07
+96szV6aBDlD/F7vuiK8fUYVknMQPfPmPNikB+fdYLvbwsv9duz6HQaDuwhGn6dh9w2U
1sABcykpdyfWqWhLt5RzCqppYr5I4yCmB1CNOKwhlzI/w8Sx1QTzGT32G/ERTlbr91BM VmNQ==

我已设法获得输出,但如果发件人发送的行数少于 3 行,则无法正常工作,因为输出也会打印出电子邮件的页脚(因为它在 head -10 的范围内)。

我只希望电子邮件的正文在 procmail 中被过滤(在文本文件中打印出来)。这可能吗?有人能给我指路吗?我束手无策。谢谢

最佳答案

试图将 MIME 多部分视为只是一堆文本是充满危险的。为了正确处理正文,您应该使用支持 MIME 的工具。但是,如果您只想假设第一部分是文本部分并删除所有其他部分,则可以创建相当简单和健壮的内容。

# Truncate everything after first body part:
# Change second occurrence of --$MATCH to --$MATCH--
# and trim anything after it
:0fb
* ^Content-type: multipart/[a-z]+; boundary="\/[^"]+
| sed -e "1,/^--$MATCH$/b" -e "/^--$MATCH$/!b" -e 's//&--/' -eq

对于优雅点,您可以开发脚本以同时实现 10 行正文截断操作,但至少,这应该可以帮助您入门。 (此时我会切换到 awk 或 Perl。)

:0fb
* ^Content-type: multipart/[a-z]+; boundary="\/[^"]+
| awk -v "b=--$MATCH" ' \
($0 == b || $0 == b "--") && seen++ { printf "%s--\n", $0; exit } \
!seen || p++ < 10'

正确地,MIME 部分的 header 不应计入行数。

这有点推测;我假设“页脚”指的是第一个正文部分之后丑陋的 base64 编码附件,当然,这个秘诀对于单部分消息根本不做任何事情。也许您想回到原来的食谱。

关于linux - 删除页脚的 procmail 配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com