메시지를 검색하고 각 첨부 파일을 개별적으로 처리합니다.

메시지를 검색하고 각 첨부 파일을 개별적으로 처리합니다.

쉘 스크립트를 사용하여 새 이메일을 검색하고 싶습니다. 방금 검색한 이메일에 첨부 파일이 있는 경우 해당 첨부 파일을 폴더에 저장해야 합니다. 첨부 파일은 다음 메시지를 검색하기 전에 개별적으로 처리되어야 합니다. 예를 들어 이름을 확인하고 파일을 이동해야 합니다.

명령줄에서 메일을 검색하고 첨부 파일을 저장하는 방법(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()

관련 정보