0

我正在尝试使用 procmail 提取邮件正文,无论是在邮件中还是在附件中,但我从下面得到了前两个字符:

:0B
* ^()[a-z]+[0-9]+[^\+]
{ msgID = "$MATCH" }
:0B
* ^Content-Disposition: *attachment.*(($)[a-z0-9].*)*($)($)\/[a-z]+[0-9]+
| base64 --decode
{ msgID = "$MATCH" }

base64 的解码不起作用,它要么不匹配整个条件,要么分配LASTFOLDER=base64 --decode"

另请参阅我之前的问题

4

1 回答 1

1

您不能对一个配方执行两个操作。你在哪里

:0B
* ^stuff\/more stuff
{ msgid="$MATCH" }
| base64 --decode

第二行是语法错误。我猜你的意思是

:0B
* ^stuff\/more stuff
{
     msgid="$MATCH"
     :0
     | base64 --decode
}

看?如果您需要多个操作,请在另一组食谱周围添加一对大括号(不要忘记最后的右大括号!)作为操作部分。也许也可以看看http://www.iki.fi/era/procmail/quickref.html

但在您的情况下,您显然想要提取已解码的令牌 base64,因此您要查找的代码将是

:0B
* ^Content-Disposition: *attachment.*(($)[a-z0-9].*)*($)($)\/[a-z]+[0-9]+
{ msgID=`echo "$MATCH" | base64 --decode` }

另请注意,等号周围不能有空格。并且正则表达式对于任意 base64 是不正确的;加号和斜杠也在允许的字符中,并且在末尾等于。将之后的部分更改\/[a-z0-9/+]+=*

于 2015-09-09T04:21:25.287 回答