如何从 /var/mail 一次读取一封邮件

如何从 /var/mail 一次读取一封邮件

假设 /var/mail/ 中有 5 条消息,我想一次阅读一条消息,然后在该邮件中进行一些字符串搜索,然后再继续处理下一条消息。是否有一个命令可以用来一次解析一条消息?

我希望编写一个 bash 脚本,它将读取 mbox 文件中的所有消息,然后一次读取一条消息,以便我可以提取消息的主题、收件人、发件人和状态(退回代码)。我的计划是使用 grepmail 获取文件中的电子邮件计数,然后在 for 循环中使用此计数一次获取一封邮件,并对文本执行操作。就像是:

$count = grepmail -r . /var/mail/user | awk '{print $2}'
for($i=1;$i<=$count;$i++) {
    $content = *GetMessage* -number $i /var/mail/user
    ...
    Do string operation on this message & save to $DelimitedData
    ...
}
$Delimiteddata

我不知道如何一次拾取一条消息来对它们执行字符串操作。有人可以指导我哪个命令/程序可以帮助我以非交互方式完成此操作。

答案1

formail工具来自程序邮件(在任何发行版中都可用,它是经典)正是为此目的而设计的。

基本用法:

formail -s myprogram --option

myprogram --option依次对每封邮件运行。该程序通过其标准输入接收每封邮件。

相关内容