Ketika saya menekan S
di mutt, ia menyimpan email ke format folder mail ( cur/ tmp/ new/
), tapi saya ingin satu file disimpan, sama seperti bagaimana lampiran disimpan.
Apakah itu dapat dikonfigurasi?
Ketika saya menekan S
di mutt, ia menyimpan email ke format folder mail ( cur/ tmp/ new/
), tapi saya ingin satu file disimpan, sama seperti bagaimana lampiran disimpan.
Apakah itu dapat dikonfigurasi?
Jawaban:
Pesan aktual juga muncul sebagai lampiran, sehingga Anda dapat menyimpannya dari daftar lampiran. Baik dari indeks atau pesan itu sendiri, tekan vuntuk membuka lampiran dan suntuk menyimpan
The s
perintah menyimpan ke kotak surat, yang bagi Anda adalah dalam format maildir. Sayangnya, tidak ada perintah save-to-file, mungkin karena dalam format mbox historis, kotak surat yang berisi satu surat hanyalah file yang berisi surat itu.
Pesan mutt
pipa perintah (pintasan default |
) dapat digunakan untuk ini. Ini membuka baris perintah dan Anda menulis cat > DESIRED-FILE-PATH
.
Opsi "decode pipa" mengontrol apa yang terjadi pada tajuk dan bagian pantomim ketika Anda menyimpan pesan dengan cara ini.
Seseorang mungkin bisa menulis makro untuk fungsi ini.
set pipe_decode=yes
ke muttrc saya adalah apa yang ditulis oleh Kai von Fintel.
=
melakukan ini.
Jika Anda touch
file dan kemudian mencoba untuk menyimpan atau menyalin pesan ke sana mutt akan menggunakannya sebagai mbox.
Anda juga mungkin ingin menggunakan salinan alih-alih menyimpan. Mutt mengasumsikan bahwa surat hanya akan ada dalam satu salinan dan menyimpan pesan ke kotak surat lain akan menghapusnya dari yang pertama, sementara menyalin akan melakukan salinan yang tepat.
Kai von Fintel 's jawaban bekerja sempurna, tapi aku hanya berpikir saya akan berbagi makro untuk merampingkan proses ini.
Pertama, di muttrc
:
macro index,pager S "| ~/.local/bin/file_email /tmp<enter>"
Ini mem-pipe email lengkap (termasuk header dan lampiran) ke skrip berikut. Buat file yang dapat dieksekusi di ~/.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"
Script ini menyimpan file ke argumen pertama (yaitu dalam muttrc
contoh di atas, email akan disimpan ke /tmp
). Format nama file adalah YYMMDD SUBJECT.eml
. Hal ini juga mengkonversi /
ke ∕
untuk mencegah menciptakan subdirektori.
formail
dalam skrip?
formail
, jadi saya sudah membaca. Namun, saya tidak sepenuhnya yakin bagian mana dari skrip saya yang Anda maksud? Menggunakan formail
untuk mengekstrak subjek dan tanggal? Jika demikian, mungkin ide yang bagus. Saya mendorong Anda untuk menulis jawaban; Saya pasti akan mengangkatnya.
Saya telah mencoba semua jawaban yang disarankan tetapi tidak bisa mendapatkan email mentah, multi-bagian (teks / polos + teks / html) untuk disimpan ke file, termasuk tajuk dan semuanya. Saya membutuhkan ini untuk memberi makan filter spam saya dengan email untuk mengajarkannya, bahwa email tertentu adalah spam atau bukan ...
Solusi yang saya buat adalah dengan menekan e
(yaitu "edit pesan") pada pesan terbuka, yang membuka pesan mentah di editor pilihan Anda. Raw di sini berarti, bahwa Anda mendapatkan pesan persis seperti saat tiba di mutt, jadi Anda memiliki semua header dan semua byte yang menyusun pesan.
Setelah memukul e
, saya hanya menulis buffer (saya mengatur editor ke vim ) ke file dengan :w <path_to_file>/<file_name>
dan hanya itu.
PS: Saya ingin menambahkan ini sebagai komentar tetapi Anda perlu tingkat reputasi tertentu untuk melakukan ini. Juga, saya tahu pertanyaannya sudah sangat lama tetapi karena neomutt masih digunakan oleh banyak orang, saya pikir ini mungkin membantu seseorang.
Pembaruan: Saya mengabaikan pipe-decode
opsi yang dibicarakan Kai. Dengan opsi yang diatur dengan benar itu akan berfungsi |
juga. Masih solusi saya bekerja, juga ;-)