メッセージを検索し、各添付ファイルを個別に処理します。

メッセージを検索し、各添付ファイルを個別に処理します。

シェルスクリプトを使用して新しいメールを検索したいと思います。検索した電子メールに添付ファイルがある場合は、その添付ファイルをフォルダに保存する必要があります。添付ファイルは、次のメッセージを取得する前に個別に処理する必要があります。たとえば、名前を確認してファイルを移動する必要があります。

コマンドラインからメールを検索し、添付ファイルを保存する方法(muttを使用)を知っていますが、それはすべてのメール添付ファイルを保存します。そのため、電子メールを受信した直後に添付ファイルを確認して処理することはできません。

先端をもらって嬉しかったです。

クアンティ

ベストアンサー1

以下のスクリプトを思い出しました。私はプログラマーではないことに注意してください。しかし、私はこれがあなたにとって良いスタートになると信じています。

次のメッセージごとに実行します。./script FILENAME

実行する必要があるいくつかの作業があります。

  • ファイル名が重複しています。
  • ファイル名がありません。
  • マルチパート/関連処理が改善されました。
#!/usr/bin/env python3
import os
import sys
import email

fp = open(sys.argv[1],"r")
msg = email.message_from_file(fp)
fp.close()

content_types_to_skip=[
  'text/plain',
  'text/html',
  'multipart/mixed',
  'multipart/alternative',
  'multipart/related'
]
attach_dir='/tmp/attachments/'
if not os.path.exists(attach_dir):
  os.mkdir(attach_dir)

# get text/plain only
if msg.is_multipart():
  for part in msg.walk():
    ctype = part.get_content_type()

    if ctype not in content_types_to_skip:
      attachment = part.get_payload(decode=True)
      name = str(part.get_filename())
      fp = open(attach_dir + name,"wb")
      fp.write(attachment)
      fp.close()

おすすめ記事