在 Linux 中将原始电子邮件消息转换为纯文本

在 Linux 中将原始电子邮件消息转换为纯文本

我在 maildir 存储的 cur 文件夹中。我想 cat 一条消息,将其通过管道传输到命令,然后输出消息正文。很简单。

例如:如果它是一条 MIME 消息...并且有一个纯文本版本...请向我显示纯文本...如果它是一条没有纯文本的 HTML 消息...则呈现 HTML 并给我一些类似于消息文本的内容...如果它只是一张图片...什么都不显示...或者可能是一个 [图像] 占位符...

我为什么要这样做?我正在尝试训练 spamassassin……我想提取关键的标题和电子邮件正文的摘录,这样我就可以快速浏览所有邮件,并确定哪些是合法的,哪些是垃圾,哪些是垃圾邮件……我已经从 maildir 中提取了与给定的 X-Spam 分数匹配的邮件列表……并显示了我想要的标题……我只需要附加邮件正文……但遇到了障碍

这里的其他一些问题建议使用 mutt。我安装了它并查看了它 - 但从我所看到的来看 - 我必须将其指向特定的 maildir ..这将使过程变得复杂..理想情况下,我想要一个可以“解释”文件中的电子邮件消息并显示它的东西

感谢您的帮助。谢谢

答案1

我设法想出了以下脚本……但仍然有些不足。当我注意到 Andrewmunpackmpack包中提出建议时,我仍在完善它

reformime我找到了提取 MIME 消息的纯文本部分的工具。我recode也在使用 GNU,但发现它会删除不可引用打印 (QP) 的内容。因此我选择使用sed(可能效率很低)来删除 QP 代码。并替换 QP 转义的常用字符。

这是我编写的脚本。我现在可以进入 maildir 文件夹 - 运行脚本。并获得邮件摘要。提供一个参数将使用正则表达式匹配特定分数。

#!/bin/bash

DEFSC="3[0-9]"
SPAMSCORE=${1-$DEFSC}

echo "Scanning for messages with a Spam Score filter of ${SPAMSCORE}"

# Get a list of messages with desired spam score
grep "^X-Spam-Score: ${SPAMSCORE}\$" * | sed 's/:X-Spam-Score: [0-9-]*//g' > ~/tmpspam

while read MSG; do
    # Extract Message ID for easy reading
    MSGID=$(echo "${MSG}" | grep -oe '^[0-9]*')
    echo "================= ${MSGID} ================="
    # Find the headers that we are looking for
    grep -e "^X-Spam-Status" -e "^Subject:" -e "^From:" ${MSG} | sed -r 's/=\?[^?]*\?[^?]*\?([^?]*)\?=/\1/g;s/=20/ /g;s/=2C/,/g;s/=3A/:/g'
    # Use reformime to find which mime section is text/plain
    MIMESEC=$(cat ${MSG} | ~/reformime -i | grep -B 1 '^content-type: text/plain' | head -n 1 | grep -oe "[0-9\.]*$")
    # Display that Mime Section
    echo '- - - - - - - - - - - - - - - - - - - - - - '
    cat ${MSG} | ~/reformime -e -s ${MIMESEC} | awk '/./{a=a+1;if(a<=10){print $0;}}' | sed -r 's/https?:\/\/[A-Za-z0-9.?%+_@&;=\/-]*/<<url>>/g'
    echo '============================================'
done < ~/tmpspam

# Delete Temp File
rm -f ~/tmpspam

举个例子:

skim_msgs.sh '4[0-9]'

输出:(找到一条消息)

Scanning for messages with a Spam Score filter of 4[0-9]
================= 1518851309 ================= 
From: John Doe <[email protected]> 
Subject: Watch "If Cops Talked Like Pilots" on YouTube 
X-Spam-Status: No, score=4.1
- - - - - - - - - - - - - - - - - - - - - - 
<<url>>
============================================

相关内容