답변:
실제 메시지도 첨부 파일로 표시되므로 첨부 파일 목록에서 저장할 수 있습니다. 색인 또는 메시지 자체 v에서 첨부 파일을 열고 s저장하려면 누르 십시오.
이 s
명령은 maildir 형식의 사서함에 저장됩니다. 불행히도, 파일에 저장 명령은 없습니다. 이전 mbox 형식에서 단일 메일을 포함하는 메일 상자는 해당 메일을 포함하는 파일 일뿐입니다.
이를 위해 mutt
명령 파이프 메시지 (기본 바로 가기 |
)를 사용할 수 있습니다. 명령 행이 열리고 작성 cat > DESIRED-FILE-PATH
합니다.
"pipe-decode"옵션은이 방법으로 메시지를 저장할 때 헤더 및 MIME 파트에 발생하는 상황을 제어합니다.
아마도이 기능에 대한 매크로를 작성할 수있을 것입니다.
set pipe_decode=yes
내 muttrc 에 추가함으로써 Kai von Fintel이 쓴 것이 무엇인지 찾기 위해 조금 파야했다 .
=
수행하면 처리되지 않은 줄 바꿈 이 나타납니다.
당신이 경우 touch
똥개는 MBOX로 사용하는 파일은 다음 저장하려고하거나 메시지를 복사합니다.
또한 저장 대신 복사를 사용하고 싶을 수도 있습니다. Mutt는 메일이 한 사본에만 존재해야하며 다른 메일함에 메시지를 저장하면 첫 번째 메일에서 메일을 삭제하고 복사는 올바른 사본을 수행한다고 가정합니다.
Kai von Fintel 의 답변 은 완벽하게 작동하지만이 프로세스를 간소화하기 위해 매크로를 공유한다고 생각했습니다.
첫째로 muttrc
:
macro index,pager S "| ~/.local/bin/file_email /tmp<enter>"
그러면 전체 이메일 (헤더 및 첨부 파일 포함)을 다음 스크립트로 파이프합니다. 에 실행 파일을 작성하십시오 ~/.local/bin/file_email
.
#!/usr/bin/env bash
# Save piped email to "$1/YYMMDD SUBJECT.eml"
# Don't overwrite existing file
set -o noclobber
message=$(cat)
mail_date=$(<<<"$message" grep -oPm 1 '^Date: ?\K.*')
formatted_date=$(date -d"$mail_date" +%y%m%d)
# Get the first line of the subject, and change / to ∕ so it's not a subdirectory
subject=$(<<<"$message" grep -oPm 1 '^Subject: ?\K.*' | sed 's,/,∕,g')
if [[ $formatted_date == '' ]]; then
echo Error: no date parsed
exit 1
elif [[ $subject == '' ]]; then
echo Warning: no subject found
fi
echo "${message}" > "$1/$formatted_date $subject.eml" && echo Email saved to "$1/$formatted_date $subject.eml"
이 스크립트는 파일을 첫 번째 인수에 저장합니다 (예 muttrc
: 위 의 예에서 이메일은에 저장 됨 /tmp
). 파일 이름의 형식은입니다 YYMMDD SUBJECT.eml
. 또한 서브 디렉토리 작성을 막기 위해 로 변환 /
합니다 ∕
.
formail
스크립트에서 사용하기가 쉽지 않습니까?
formail
읽었습니다. 그러나 내 스크립트 중 어느 부분을 언급했는지 확실하지 않습니다. formail
주제와 날짜를 추출하는 데 사용 하십니까? 그렇다면 아마도 좋은 생각 일 것입니다. 답을 쓰도록 촉구합니다. 확실히 찬성했습니다.
제안 된 모든 답변을 시도했지만 헤더, 모든 것을 포함하여 원시 멀티 파트 (텍스트 / 일반 + 텍스트 / HTML) 전자 메일을 파일에 저장할 수 없습니다. 특정 메일이 스팸인지 아닌지를 알려주기 위해 스팸 필터에 전자 메일을 제공하려면이 기능이 필요했습니다.
내가 찾은 해결책 e
은 열린 메시지를 누르면 (예 : "메시지 편집") 선택한 편집기에서 원시 메시지 를 엽니 다 . 여기서 Raw는 메시지가 mutt에 도착한 그대로 전달되므로 메시지를 구성하는 모든 헤더와 모든 바이트가 있음을 의미합니다.
을 친 후에 e
는 버퍼를 ( 파일 을 vim으로 설정 ) 파일에 작성 :w <path_to_file>/<file_name>
하면됩니다.
추신 : 나는 이것을 주석으로 추가했을 것이지만 이것을하기 위해서는 어느 정도의 명성이 필요합니다. 또한 질문이 매우 오래 되었다는 것을 알고 있지만 많은 사람들이 여전히 neomutt 를 사용하기 때문에 누군가에게 도움이 될 것이라고 생각했습니다.
업데이트 :pipe-decode
Kai가 말한 옵션을 간과했습니다 . 해당 옵션을 올바르게 설정하면을 통해 작동했을 것 |
입니다. 여전히 내 솔루션도 작동합니다. ;-)