从“content-disposition:attachment”正文部分解码base64

时间:2015-09-08 18:43:31

标签: email base64 procmail mime-mail

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

$http.get("/folder/ofSubroutine.cgi")
    .then(function(minutes_results) {
        console.log(minutes_results);
        var minutes_results_as_array = [];
        for (var key in minutes_results) {
            if (key != "error") {
                minutes_results[key].id = key;
                minutes_results_as_array.push(minutes_results[key]);
            }
        }
        // display minutes_results_as_array as you see fit
      } );

base64的解码不起作用,要么不匹配整个条件,要么分配:0B * ^()[a-z]+[0-9]+[^\+] { msgID = "$MATCH" } :0B * ^Content-Disposition: *attachment.*(($)[a-z0-9].*)*($)($)\/[a-z]+[0-9]+ | base64 --decode { msgID = "$MATCH" }

另见my earlier question

1 个答案:

答案 0 :(得分:0)

您不能对单个食谱执行两项操作。你在哪里

: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/+]+=*