我正在编写一个 shell 脚本来从 mbox 文件中提取邮件附件
目前我使用这个命令:cat mboxfile|formail -des munpack -qf
但我想在文件名中嵌入发件人电子邮件地址,例如:
user@host_filename.extension
你能给我推荐一些工具吗?
我正在编写一个 shell 脚本来从 mbox 文件中提取邮件附件
目前我使用这个命令:cat mboxfile|formail -des munpack -qf
但我想在文件名中嵌入发件人电子邮件地址,例如:
user@host_filename.extension
你能给我推荐一些工具吗?
解决了:
cat $MBOX|formail -des ../dumpFile.sh # split the mbox in many messages
for mail in * # cycle on every message
do
echo ===========================
FROM=$(../extractFrom.sh $mail |tr -d "<"|tr -d ">"|tr -d "/" |sed 's/@/-AT-/'|tr "." "-"|sort|uniq) # get address
for file in $(munpack $mail |cut -f1 -d" "|tr -s "_" "-") # extract attachments and prepend address
do
echo ln $file utente:${FROM}_tipo:$file # whatever
done
done
其中 dumpFile.sh 只是:
cat >$(mktemp -p .)
extractFrom.sh 是一个 awk 脚本,用于获取电子邮件地址
为什么不将脚本语言与 mbox 库一起使用?例如 Perl 和Mail::MBox模块。使用现成的库可能会为您省去很多麻烦。
除了使用 formail,您还可以使用 munpack 和 awk 来保存 mbox 文件的所有附件:
awk 'BEGIN {RS="\r\n";} /^From / { cmd="munpack"; print mail | cmd ;close(cmd) ;mail ="";} {mail = mail $0 "\n";}'
如果您将 cmd 更改为 munpack -C your_destination_dir
之后在保存附件的目录中运行它:
find . -type f -not -name "your_specific_file" -maxdepth 1 -exec rm {}
这将删除目录中与您的特定请求不匹配的所有文件