用于提取具有特定文件名的邮件附件的 shell 脚本

发布于 2024-08-22 19:54:45 字数 188 浏览 10 评论 0原文

我正在编写一个 shell 脚本来从 mbox 文件中提取邮件附件

目前我使用以下命令: cat mboxfile|formail -des munpack -qf

但我想在文件名中嵌入发件人电子邮件地址,例如:

user@host_filename.extension

你能给我推荐一些工具吗?

I'm writing a shell script to extract mail attachments from an mbox file

At the moment I use this command: cat mboxfile|formail -des munpack -qf

But I'd like to embed the sender email address in the filename, something like:

user@host_filename.extension

Can you suggest me some tool?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟酉 2024-08-29 19:54:45

为什么不将脚本语言与 mbox 库一起使用?例如 Perl 和 邮件::MBox 模块。使用现成的库可能会为您省去很多麻烦。

Why not use a scripting language with mbox libraries ? e.g. Perl and the Mail::MBox module. Using a ready made library will likely save you a lot of grief.

旧时浪漫 2024-08-29 19:54:45

已解决:

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 脚本

SOLVED:

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

where dumpFile.sh is just:

cat >$(mktemp -p .)

and extractFrom.sh is an awk script to get the email address

路弥 2024-08-29 19:54:45

除了使用 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

之后,在保存 Attachmenets 的目录中运行此命令:

 find . -type f -not -name "your_specific_file" -maxdepth 1 -exec rm {}

这将删除目录中与您的特定不匹配的所有文件要求

instead of using formail you can also use
munpack with awk to save all attachments of an mbox file:

awk 'BEGIN {RS="\r\n";} /^From / { cmd="munpack";  print mail | cmd ;close(cmd) ;mail ="";} {mail = mail $0 "\n";}'

if you change the cmd to munpack -C your_destination_dir

after that run this in the directory where your attachmenets are saved:

 find . -type f -not -name "your_specific_file" -maxdepth 1 -exec rm {}

this removes all the files inside the directory that doesn't match your specific request

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文