제목 줄을 기반으로 전자 메일을 읽고 base64 첨부 파일을 가져 오거나 직접 첨부 파일을 가져올 수 있습니까? 서버 : Linux 시스템Linux 명령 줄에서 메일 첨부 파일 읽기
답변
귀하의 질문은 단일 첨부 파일이 있고 안정적으로 추출 할 수 있다고 가정하는 것 같습니다. 일반적인 경우 전자 메일 메시지는 기본적으로 무한대의 첨부 파일을 가질 수 있으며 인코딩은 여러 개의 인코딩 중 하나 일 수 있습니다.
그러나 우리는 당신이 지속적으로 처음 base64로 첨부 항상
case $(formail -zcxSubject: <"$message") in
"Hello, here is your report for "*)
awk 'BEGIN { h=1 }
h { if ($0 ~ /^$/) h=0 ; next } # skip headers
/^Content-Disposition: attachment/ { a=1 } # find att
a && /^$/ { p=1; next }
p && /^$/ { exit }
p' "$message" |
base64 -d ;;
esac
이 추출됩니다
처럼 당신이 원하는 하나, 뭔가 될 것입니다 정적 메시지 템플릿을 사용하는 하나의 송신자를 처리한다고 가정하면 Subject:
헤더를 찾고 glob 패턴과 비교하십시오. 나는 이것이 당신이 "주제에 기반 함"을 의미한다는 것을 기대합니다 - 일치하는 제목 헤더를 찾으면이 메시지를 검사하고 그렇지 않으면 무시합니다.
원시 Awk 스크립트는 base64 데이터를 분리하고 추출을 위해 base64 -d
으로 전달하려고 시도합니다. 여기에는 메시지 형식에 대한 성가신 및 다소 미숙 한 가정이 포함되어 있으며 중요한 추가 조정이 필요할 수 있습니다. 간단히 말하면 헤더를 건너 뛰고 첨부 파일을 식별하는 MIME 헤더를 찾고 메시지의 다른 모든 내용을 건너 뛰고 인쇄합니다. 이 헤더가 없거나 잘못된 MIME 부분을 식별하면 결과가 없거나 잘못된 결과가 표시됩니다. 또한 /^Content-Disposition:/
정규 표현식은 MIME 헤더가 아닌 행에서 이론적으로 일치 할 수 있지만 매우 드뭅니다 (예 : 반송 메시지를보고있는 경우 실제로 발생할 수 있음).
보다 강력한 방법은 MIME 추출 도구 또는 아마도 사용자 지정 스크립트를 사용하여 실제로 MIME 구조를 구문 분석하고 원하는 부분을 추출하는 것입니다. 정확히 무엇이 필요한지에 대한 세부 사항이 없으면 나는 그것을 제공 할 수 없습니다. 위의 스크립트는 단순히 디코드 된 페이로드를 표준 출력에 인쇄합니다.
formail
은 RFC2047 인코딩에 대해 전혀 모르고 있으므로 제목이 일반 ASCII가 아닌 경우, 스크립트에서 인코딩 된 양식을 지정해야합니다.
안녕하세요, 원시 Awk 스크립트는 base64 데이터를 분리하고 추출을 위해 base64 -d에 전달하려고 시도합니다. - 어떻게 될지. 보낸 사람, 제목 및 첨부 파일 이름을 추출 할 수 있습니다. base64 데이터 추출에 관심이 있습니다. –
질문을 이해할 수 없습니다. Awk 스크립트가하는 일에 대한 자세한 내용이 필요하거나 더 많거나 다른 기능을 가진 스크립트를 원하십니까? – tripleee
/var/spool/mail/user 파일을 읽고 다른 제목을 기반으로 첨부 파일의 세부 정보를 추출하는 방법을 알고 싶습니다. –
Gmail은 해당 프로토콜을 지원하는 모든 클라이언트를 사용하여 전자 메일을 가져올 수있는 IMAP 서비스를 제공합니다. 클라이언트가 디스크에서 사용 가능하게 만드는 방법은 다양 할 수 있습니다.
가장 널리 사용되는 명령 행 IMAP 클라이언트는 fetchmail이어야합니다. 우분투에서 쉽게 설치할 수 있습니다. 그런 다음 gmail과 함께 사용하도록 특정 구성을 설정합니다.
fetchmail에서 한 가지 중요한 점은 원격 서버에서 전자 메일을 가져 와서 로컬 MTA를 통해 파이프하는 것입니다. 따라서이 설치가 작동하려면 로컬로 구성된 MTA가 있어야합니다. MTA는 아마/var/mail/$ USER에 전자 메일을 첨부 할 것이므로이 파일을 읽고 처리 할 수 있습니다.
사용할 수있는 다른 도구는 offlineimap입니다. 나는 그것을 사용하지 않았다. 설정은 fetchmail보다 쉽습니다.
이메일에 포함 된 첨부 파일을 저장하려면 mpack을 설치해야합니다. 그런 다음 각 전자 메일에 대한 .txt 파일에서 munpack 명령을 실행하십시오 (예, 첨부 파일의 모든 횡설수설을 포함하는 명령). 첨부 파일을 디코드하여 개별 파일에 저장합니다 :
$ munpack mail.txt
Invoice.PDF (application/pdf)
my-picture.png (image/png)
- 1. 리눅스 메일 명령 파일 첨부
- 2. 메일 읽기 Android2.1의 첨부 파일?
- 3. Java의 명령 줄에서 파일 읽기.
- 4. 명령 줄에서 입력으로 파일 읽기
- 5. * linux 명령 줄에서
- 6. 문제 : Linux 컴퓨터에서 명령 줄에서 파일 디코딩
- 7. bcc와 헤더를 사용하여 linux 명령 줄에서 메일 보내기
- 8. 명령 줄에서 출력 읽기
- 9. 명령 줄에서 출력 읽기
- 10. 전자 메일 읽기, blob에 첨부 파일 덤프
- 11. ZF2 전자 메일 첨부 파일 읽기
- 12. 명령 줄에서 C#을 사용하여 파일 읽기
- 13. 명령 줄에서 Linux "GUI"만들기
- 14. 메일 첨부 파일에 첨부 파일
- 15. 자동 메일 첨부 파일
- 16. 전자 메일 첨부 파일
- 17. Outlook에 메일 첨부 파일
- 18. 메일 첨부 파일 확인
- 19. 안드로이드 메일 첨부 파일
- 20. 메일 첨부 파일
- 21. 명령 줄에서 파일 이동
- 22. 명령 줄에서 파일 위치 전달
- 23. 특정 문자열을 포함하는 파일 만 열고 Linux 명령 줄에서 바꿉니다.
- 24. Linux 쉘 스크립트 "읽기"명령
- 25. linux debian 아래의 명령 줄에서 sqlserver에 액세스
- 26. linux maven 명령 줄에서 runing testeng
- 27. Linux 백업 파일 명령
- 28. PHP S/MIME 전자 메일 p7m 첨부 파일 읽기 (Base64?)
- 29. 전자 메일 읽기 S/MIME 및 첨부 파일 p7s
- 30. 저장된 전자 메일 첨부 파일에서 kml 파일 읽기
'formail' 프로그램을 살펴보십시오.이 질문은 StackExchange 사이트 [** Super User **] (http://superuser.com/) 또는 [** ServerFault **] (http://serverfault.com/)에서 더 적절할 것입니다 –
가능합니까? 명령 줄 만 사용하고 추가 유틸리티는 사용하지 않으시겠습니까? –
메시지 및 첨부 파일이 uuencoded 방식으로 동일한 파일의 별도 부분으로 포함 된 것을 나는 알고 있습니다. (몇 가지 형식이 있지만). 첨부 파일을 읽고 추출 할 수 있도록 uudecode 할 수있는 무언가가 필요합니다. (당신이 7 비트 ASCII를 읽지 않는다면) 한 줄에 하나의 유틸리티로 문자열을 묶을 수는 있지만 그렇게하기 위해 작성된 유틸리티를 사용하는 것이 더 좋다. –