กำลังบันทึกอีเมลเป็นไฟล์เป็น mutt หรือไม่


28

เมื่อฉันกดSmutt มันจะบันทึกเมลเป็นรูปแบบโฟลเดอร์เมล ( cur/ tmp/ new/) แต่ฉันต้องการบันทึกไฟล์เดียวเช่นเดียวกับวิธีบันทึกสิ่งที่แนบมา

สามารถกำหนดค่าได้หรือไม่?

คำตอบ:


23

ข้อความจริงจะแสดงเป็นไฟล์แนบดังนั้นคุณจึงสามารถบันทึกได้จากรายการไฟล์แนบ จากดัชนีหรือข้อความเองให้กดvเพื่อเปิดไฟล์แนบและsเพื่อบันทึก


เพียงบันทึก: ถ้าข้อความอีเมลของคุณมีสิ่งที่แนบมาดังนั้นการบันทึกเพียงรายการแรกจากรายการสิ่งที่แนบจะบันทึกข้อความ - แต่ไม่มีสิ่งที่แนบมารวมอยู่ภายใน
sdaau

3
หมายเหตุอื่น: สิ่งนี้ไม่ได้บันทึกส่วนหัวใด ๆ รวมถึงผู้ส่งผู้รับและหัวเรื่อง
Sparhawk

31

sคำสั่งบันทึกไปยังกล่องจดหมายซึ่งสำหรับคุณอยู่ในรูปแบบ Maildir น่าเสียดายที่ไม่มีคำสั่งบันทึกไปยังไฟล์อาจเป็นเพราะในรูปแบบ mbox ที่ผ่านมากล่องจดหมายที่มีเมลเดียวจะเป็นเพียงไฟล์ที่มีเมลนั้น

muttคำสั่งท่อข้อความ (ทางลัดเริ่มต้น|) สามารถนำมาใช้สำหรับการนี้ cat > DESIRED-FILE-PATHจะเปิดบรรทัดคำสั่งและการที่คุณเขียน

ตัวเลือก "ไปป์ถอดรหัส" ควบคุมสิ่งที่เกิดขึ้นกับส่วนหัวและส่วนล้อเลียนเมื่อคุณบันทึกข้อความด้วยวิธีนี้

หนึ่งอาจเขียนแมโครสำหรับฟังก์ชันนี้


เยี่ยมเลยนี่สามารถช่วยรักษาส่วนหัวได้ แต่ตอนนี้ฉันจะใช้วิธีของไมเคิลขอบคุณ!
เดซี่

1
วิธีนี้ใช้งานได้ดีและให้การบันทึกอีเมลที่มีประสิทธิภาพมากกว่า 50+ รายการ (ใช้การติดแท็กการจับคู่รูปแบบ) กับไฟล์ ฉันต้องขุดนิดหน่อยเพื่อหาว่าการเพิ่มset pipe_decode=yesmuttrc ของฉันคือสิ่งที่ Kai von Fintel เขียน
Screenack

นอกจากนี้สิ่งนี้จะบันทึกสิ่งที่แนบมาในไฟล์อีเมลที่ส่งออกเช่นกัน
sdaau

นี่เป็นเรื่องปกติ แต่ฉันเห็นการขึ้นบรรทัดใหม่ที่ไม่ได้=ดำเนินการ
Jack Wasey

น่ากลัว มันใช้งานได้ดีสำหรับฉัน ฉันต้องการแยกอีเมลมากกว่า 20 รายการจาก Maildir ที่ล้าสมัย ไชโย!
prageeth

10

หากคุณtouchไฟล์แล้วลองบันทึกหรือคัดลอกข้อความไปยังมัน mutt จะใช้มันเป็น mbox

นอกจากนี้คุณอาจต้องการใช้การคัดลอกแทนการบันทึก มัทสมมติว่าเมลควรมีอยู่ในหนึ่งสำเนาและการบันทึกข้อความไปยังกล่องจดหมายอื่นจะลบมันออกจากอันแรกในขณะที่การคัดลอกจะทำสำเนาที่เหมาะสม


1
ฉันต้องการรับข้อความด้วยส่วนหัวแบบเต็มเพื่อวางลงในสคริปต์ทดสอบตัวกรองและสิ่งนี้ทำงานได้อย่างสมบูรณ์
Soren Bjornstad

2

คำตอบของ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ในสคริปต์หรือไม่
0 andriy

@ 0andriy ฉันไม่คุ้นเคยformailดังนั้นฉันจึงได้อ่าน อย่างไรก็ตามฉันไม่แน่ใจว่าคุณอ้างถึงส่วนใดในสคริปต์ของฉัน ใช้formailเพื่อแยกเรื่องและวันที่? ถ้าเป็นเช่นนั้นอาจเป็นความคิดที่ดี ฉันอยากให้คุณเขียนคำตอบ ฉันจะลงคะแนนมันแน่นอน
Sparhawk

0

ฉันได้ลองคำตอบที่แนะนำทั้งหมดแล้ว แต่ไม่สามารถรับอีเมลดิบแบบหลายส่วน (text / plain + text / html) เพื่อบันทึกลงในไฟล์รวมถึงส่วนหัวและทุกอย่าง ฉันต้องการสิ่งนี้เพื่อป้อนตัวกรองสแปมของฉันด้วยอีเมลเพื่อสอนว่าจดหมายนั้นเป็นจดหมายขยะหรือไม่ ...

วิธีแก้ปัญหาที่ฉันพบคือกดe(เช่น "แก้ไขข้อความ") บนข้อความเปิดซึ่งเปิดข้อความดิบในตัวแก้ไขที่คุณเลือก Raw ที่นี่หมายถึงว่าคุณได้รับข้อความตรงตามที่ได้รับใน mutt ดังนั้นคุณจึงมีส่วนหัวและไบต์ทั้งหมดที่ประกอบด้วยข้อความ

หลังจากกดปุ่มeฉันเพิ่งเขียนบัฟเฟอร์ (ฉันตั้งค่าตัวแก้ไขเป็นกลุ่ม ) ไปยังไฟล์ด้วย:w <path_to_file>/<file_name>และนั่นก็คือ

PS: ฉันจะเพิ่มสิ่งนี้เป็นความคิดเห็น แต่คุณต้องมีชื่อเสียงในระดับหนึ่งเพื่อทำสิ่งนี้ นอกจากนี้ฉันรู้ว่าคำถามนั้นเก่ามาก แต่เนื่องจากNeomuttยังคงถูกใช้โดยคนจำนวนมากฉันคิดว่านี่อาจช่วยคนได้

ปรับปรุง:ฉันมองข้ามpipe-decodeตัวเลือกที่ไก่พูดถึง ด้วยการตั้งค่าตัวเลือกที่ถูกต้องมันจะทำงานผ่าน|ได้เช่นกัน ยังแก้ปัญหาของฉันยังใช้งานได้ ;-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.