ฉันจะส่งอีเมลเอกสารแนบจากบรรทัดคำสั่งได้อย่างไร


25

เป็นไปได้ไหมที่จะส่งไฟล์แนบทางอีเมลจากบรรทัดคำสั่ง?

ถ้าเป็นไปได้ฉันต้องการอะไรที่เรียบง่ายเหมือน:

mail -a myfile.txt -t me@example.com -s "Here's my file"

ค่าเริ่มต้นผู้ใช้ตัวแทนจดหมายmail( ubuntu) บรรทัดคำสั่ง(aka mailx) คือไม่รู้ MIME ดังนั้นจึงไม่สามารถจัดการกับสิ่งที่แนบมาด้วยวิธีใดก็ตามที่ไม่ใช่ 1980 นี่เป็นคำถามที่ดีฉันกำลังมองหา Canonical MUA ของบัญญัติ; มากขึ้นที่จะมา
msw

คำตอบ:


18

จากตัวแทนผู้ใช้จดหมายทั้งหมดในที่เก็บ Ubuntu ปรากฏว่าmuttเป็น MUA บรรทัดคำสั่งที่ได้รับการสนับสนุนจาก Long Term Support

ตามคู่มือคุณสามารถทำสิ่งที่ชอบ:

mutt -a myfile.txt -s "Here's my file" -- me@example.com

ยกเว้นว่ามันจะไม่ไปที่ใดก็ได้เนื่องจากต้องมี Mail Transfer Agent ด้วย สิ่งที่ได้รับความนิยมคือ:

  • sendmail ที่เคารพ
  • postfix
  • exim4
  • qmail
  • nullmailer

และคนเดียวที่ยอมรับดูเหมือนว่าจะมีการสนับสนุน postfix (ขอบคุณสำหรับการแก้ไขสตีฟ) และexim4

หนึ่งอาจกล่าวได้ว่าxdg-emailนั้นเป็น Ubuntu MUA ที่เหมาะสม แต่มันเป็นส่วนหน้าของกระดูกที่เปลือยซึ่งจะดำเนินการMUA ที่คุณต้องการในนามของคุณ

หากคุณต้องการคำแนะนำว่า MTA ใดที่เหมาะกับการใช้งานของคุณอาจเปิดคำถามอื่นที่นี่


เป็นคำถามที่ดีขอบคุณ คุณแจ้งให้ฉันให้ทำงานกับกล่องจดหมายของฉัน ฉันใช้ nullmailer MTA เพื่อส่งต่อไปยัง ISP ของฉันและmuttคำสั่งตัวอย่างทำงานตามที่โฆษณาไว้ อนึ่ง nullmailer มี sendmail front-end ปลอมเพื่อให้โปรแกรมส่วนใหญ่ที่คาดว่าจะคุยกับ sendmail ถูกสับเปลี่ยนไปที่ MTA จริงโดยไม่ต้องใช้ความพยายามใด ๆ จากฉัน
msw

msw ฉันค่อนข้างไม่แน่ใจว่าทำไมคุณถึงอ้าง exim4 เป็นเพียงการสนับสนุนแบบบัญญัติเดียว postfix ยังอยู่ในหลักและเป็นสิ่งที่เปิดใช้งานถ้าคุณเลือกการเลือกงาน Mail Server จากการติดตั้งเซิร์ฟเวอร์ Ubuntu ฉันเชื่อว่า exim4 เป็นค่าเริ่มต้นของเดเบียน MTA และในอดีตการตั้งค่าบรรจุภัณฑ์อาจทำให้ค่าเริ่มต้นถูกดึงเข้าไป แต่ตามระยะเวลาหนึ่งขณะนี้ postfix เป็น MTA ที่ต้องการใน Ubuntu
Steve Beattie

โอ้และโปรดทราบด้วยว่าถ้าคุณไปกับ bsd mail / mailx เป็น MUA (ที่ไม่ได้รับการรับรู้เรื่องไม่สำคัญ) คุณจะยังคงต้องใช้ MTA เพื่อส่งจดหมาย แต่โง่ดีกว่าสำหรับคุณอยู่ดี :-)
Steve Beattie

11

ฉันมีปัญหาในการส่งไฟล์แนบเช่นกัน เมื่อฉันส่งอีเมลโดยไม่มีสิ่งที่แนบมามันก็ประสบความสำเร็จ แต่ก็ไม่ได้แนบ ปัญหานี้มีอยู่ด้วยsendemail, mutt, mail, mailx, uuencodeคำสั่ง

โชคดีที่มันถูกแก้ไขอย่างสนุกสนาน ฉันใช้ Gmail เพื่อส่งอีเมล คุณสามารถกำหนดค่า Gmail ของคุณสำหรับการส่งอีเมล์ผ่านทางคำสั่งใน terminal เป็นประกาศที่ http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html

คุณสามารถส่งอีเมลข้อความโดยใช้:

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 

แต่คุณไม่สามารถส่งไฟล์เดียวกับไฟล์แนบดังต่อไปนี้:

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt

หรือ:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

ในที่สุดฉันเข้าใจว่ามีเพียงรูปแบบนี้เท่านั้นที่สามารถส่งไฟล์แนบ:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

ความแตกต่างคือการมีอยู่ของคำสั่ง "echo"

อัปเดต: 201808

ดูเหมือนว่า-aตัวเลือกจะถูกเปลี่ยนเป็นตัวพิมพ์ใหญ่ -Aสำหรับสิ่งที่แนบมาทันที -aดูเหมือนว่าจะมีการเปลี่ยนหัวตามdoc


ยอดเยี่ยม ขอบคุณ ฉันพยายามส่ง.zshrcไฟล์ไปยังใครบางคนและแม้ว่าฉันจะใช้mailมากในการส่งข้อความด่วน แต่การพยายามส่งไฟล์แนบไม่ทำงาน ฉันแค่ต้องการการยืนยันว่าเป็นไปได้ที่จะตระหนักว่าคำสั่งโต้แย้งนั้นสำคัญมาก สิ่งนี้ใช้ได้กับฉัน: mail -s "zshrc" -a ~/.zshrc username@example.com... แน่นอนว่าฉันยังคงต้องพิมพ์เนื้อหาของข้อความและกดctrl+dบรรทัดว่างสุดท้าย
Karl Wilbur

การใช้mail username@example.com -a ~/.zshrc"งาน" ในการส่งข้อความ แต่ไม่ได้ส่งไฟล์ ถ้าฉันลองmail username@example.com -a ~/.zshrc -s 'zshrc'มันจะเห็นได้ชัดว่า params หลังจากที่อยู่ผู้รับถูกละเว้น
คาร์ลวิลเบอร์

@Masoud lnk ใช้งานไม่ได้ ... ต้องการอัปเดต แต่คุณรู้ดีกว่าว่าเอกสารอะไรที่คุณให้มาดังนั้นฉันจึงแจ้งให้คุณทราบ
Philippe Gachoud

6

ฉันพบว่าคำสั่งและพารามิเตอร์มีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้

หากคุณต้องการส่งไฟล์แนบของคุณด้วยคำสั่งนี้:

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt

ตัวเลือกattachmentควร-Aเป็นแบบAใด


3

คุณอาจต้องการส่งไฟล์จากเปลือกแต่อย่างอื่นใช้ธันเดอร์เบิร์ด

ในกรณีนี้ลองใช้thunderbird -remote ...ประโยชน์ - โดยปกติสมมติว่า Thunderbird ทำงานอยู่:

คำสั่งเปิดหน้าต่างเขียนเมลของอินสแตนซ์ทันเดอร์เบิร์ดที่กำลังรันอยู่
ที่อยู่ "จาก" คือที่อยู่เริ่มต้นของคุณที่กำหนดค่าไว้ในธันเดอร์เบิร์ด
นอกจากนี้ยังใช้การตั้งค่าบัญชีที่มีอยู่โดยไม่จำเป็นต้องมีการตั้งค่าแยกต่างหาก

สำหรับจดหมายที่ถูกยึดyou@example.comติดกับหัวเรื่อง "S", เนื้อความ "B" และเอกสารแนบ/some/absolute/file.txtคำสั่งคือ

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"

มีสองปัญหาคือ

ไฟล์แนบจะต้องได้รับจากเส้นทางที่แน่นอนซึ่งเป็นที่น่าเบื่อในทางปฏิบัติ ที่สามารถดำเนินการได้โดยใช้readlink -fเพื่อแก้ไขเส้นทางสัมพัทธ์:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"

นอกจากนี้คำสั่งจะยาว ใช้เชลล์สคริปต์หรือฟังก์ชั่นเชลล์โดยมีสี่อาร์กิวเมนต์:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

ด้วยฟังก์ชันนี้คำสั่งจะอ่านได้:

thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1

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


2

heirloom-mailxแพคเกจในเดเบียนให้mailxคำสั่งในการส่งไฟล์แนบ mime ได้อย่างง่ายดาย งานดังต่อไปนี้สำหรับฉัน;

 mailx -a attachment.zip -s subject rctp@domain.to

1
นี่คือสิ่งที่ขาดหายไปที่ฉันต้องการ mailและmailxมาพร้อมกับ RH-alikes มี-aสำหรับไฟล์ที่แนบมา แต่อย่างหนึ่งที่รวมอยู่ในเดเบียนลุคไม่ได้
DopeGhoti

0

ฉันต้องการเพิ่มคำตอบอื่นที่ใช้ในการเพิ่มเนื้อความพร้อมกับไฟล์แนบ ไชโย !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.