Làm cách nào để gửi email tệp đính kèm từ dòng lệnh


25

Có thể gửi email tệp đính kèm từ dòng lệnh?

Nếu có thể, tôi muốn một cái gì đó đơn giản như:

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

1
Tác nhân người dùng thư dòng lệnh ubfox mặc định mail(hay còn gọi mailxlà MIME) do đó không thể xử lý tệp đính kèm theo bất kỳ cách nào không phải là 1980ish. Đây là một câu hỏi hay, tôi đang tìm kiếm Canonical MUA chính tắc; nhiều hơn nữa
msw

Câu trả lời:


18

Trong tất cả các tác nhân người dùng thư trong kho lưu trữ Ubuntu, có vẻ như mutt là MUA dòng lệnh được ban phước với Hỗ trợ dài hạn.

Theo hướng dẫn , bạn có thể làm một cái gì đó chính xác như:

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

ngoại trừ nó sẽ không đi bất cứ nơi nào vì người ta cũng cần một Đại lý chuyển thư. Những cái phổ biến là:

  • sendmail đáng kính
  • hậu tố
  • exim4
  • qmail
  • người gửi thư

và những cái duy nhất mà Canonical dường như hỗ trợ là postfix (cảm ơn vì đã sửa Steve) và exim4 .

Người ta cũng có thể nói rằng xdg-email cũng là một Ubuntu MUA thích hợp, nhưng nó là một giao diện cơ bản chỉ thực hiện MUA ưa thích của bạn thay mặt bạn.

Nếu bạn muốn lời khuyên về MTA nào có thể phù hợp với mục đích sử dụng của bạn, có lẽ nên mở một câu hỏi khác tại đây.


Câu hỏi tuyệt vời, cảm ơn. Bạn nhắc tôi nhận thư làm việc trên hộp của tôi. Tôi đã sử dụng MTA nullmailer để chuyển tiếp một cách mù quáng đến ISP của tôi và muttlệnh ví dụ hoạt động như quảng cáo. Vô tình nullmailer có một giao diện sendmail giả mạo để hầu hết các chương trình mong muốn nói chuyện với sendmail bị xáo trộn sang một MTA thực sự với nỗ lực không từ tôi.
msw

msw, tôi không chắc tại sao bạn lại tuyên bố exim4 là hỗ trợ chính duy nhất, postfix cũng là chính và là thứ được kích hoạt nếu bạn chọn lựa chọn tác vụ Máy chủ Mail từ cài đặt máy chủ Ubuntu. Tôi tin rằng exim4 là MTA mặc định của debian và trong quá khứ, các tùy chọn đóng gói có thể khiến nó bị kéo theo mặc định, nhưng hiện tại, postfix chắc chắn là MTA ưa thích trong Ubuntu.
Steve Beattie

Ồ, và cũng lưu ý rằng nếu bạn đã sử dụng bsd mail / mailx dưới dạng MUA (không phải là mime), bạn vẫn sẽ cần một MTA nào đó để thực sự gửi thư. Nhưng dù sao thì tốt hơn cho bạn. :-)
Steve Beattie

11

Tôi cũng gặp rắc rối với việc gửi tập tin đính kèm. Khi tôi gửi email mà không có tệp đính kèm, nó đã thành công nhưng không phải với tệp đính kèm. Vấn đề này đã tồn tại với sendemail, mutt, mail, mailx, uuencodelệnh.

May mắn thay, nó đã được giải quyết một cách vui vẻ. Tôi sử dụng Gmail để gửi email. Bạn có thể định cấu hình gmail của mình để gửi email thông qua các lệnh trong thiết bị đầu cuối như được khai báo tại http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .

Bạn có thể gửi email văn bản bằng cách sử dụng:

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

nhưng bạn không thể gửi cùng một tệp với tệp đính kèm như dưới đây:

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

hoặc là:

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

Cuối cùng, tôi hiểu rằng chỉ có định dạng này mới có thể gửi tệp đính kèm:

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

Vui thay, sự khác biệt là sự tồn tại của lệnh "echo".

Cập nhật: 201808

Có vẻ như -atùy chọn đã được thay đổi với Uppercase -A để đính kèm. Các -adường như là để thay đổi tiêu đề theo doc


Xuất sắc! Cảm ơn. Tôi đã cố gắng gửi .zshrctệp của mình cho ai đó và mặc dù tôi sử dụng mailrất nhiều để gửi tin nhắn nhanh, cố gắng gửi tệp đính kèm không hoạt động. Tôi chỉ cần xác nhận rằng có thể nhận ra rằng thứ tự lập luận là rất quan trọng. Điều này làm việc cho tôi: mail -s "zshrc" -a ~/.zshrc username@example.com... tất nhiên tôi vẫn phải gõ nội dung thư và nhấn ctrl+dvào dòng trống cuối cùng.
Karl Wilbur

Sử dụng mail username@example.com -a ~/.zshrcđã "làm việc" trong đó nó đã gửi tin nhắn nhưng nó không gửi tập tin. Nếu tôi đã thử mail username@example.com -a ~/.zshrc -s 'zshrc'thì rõ ràng là các thông số sau khi địa chỉ người nhận bị bỏ qua.
Karl Wilbur

@Masoud lnk bị hỏng ... muốn cập nhật nó, nhưng bạn biết rõ hơn những tài liệu nào bạn đã cung cấp nên tôi để nó cho bạn
Philippe Gachoud

6

Tôi thấy rằng lệnh và các tham số đã được thay đổi gần đây.

Nếu bạn muốn gửi tệp đính kèm của mình bằng lệnh này:

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

Tùy chọn attachmentnên -Alà VỐN A.


3

Bạn có thể muốn gửi một tệp từ trình bao , nhưng nếu không thì sử dụng Thunderbird .

Trong trường hợp này, thử thunderbird -remote ...là hữu ích - giả sử thunderbird thường chạy:

Lệnh mở một cửa sổ soạn thư của một cá thể sấm sét đang chạy.
Địa chỉ "Từ" là địa chỉ mặc định của bạn được định cấu hình trong thunderbird.
Ngoài ra, các cài đặt tài khoản hiện có được sử dụng, không cần thiết lập riêng.

Đối với thư được gắn vào you@example.com, với chủ đề "S", thân "B" và tệp đính kèm /some/absolute/file.txt, lệnh là

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

Có hai vấn đề:

Các tập tin đính kèm cần phải được đưa ra bởi một đường dẫn tuyệt đối , đó là tẻ nhạt trong thực tế. Điều đó có thể được xử lý bằng cách sử dụng readlink -fđể giải quyết các đường dẫn tương đối:

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

Ngoài ra, lệnh là dài. Sử dụng tập lệnh shell hoặc hàm shell, với bốn đối số:

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

Với chức năng này, lệnh trở nên dễ đọc:

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

sẽ mở một cửa sổ "Viết" sấm sét với tệp đính kèm và Từ, Đến, Chủ đề và văn bản cơ thể được điền vào. Nó có thể được chỉnh sửa trước khi gửi.


2

heirloom-mailxgói trong debian cung cấp mailxlệnh để gửi tệp đính kèm mime dễ dàng. công việc sau đây cho tôi;

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

1
Đây là mảnh còn thiếu tôi cần; các mailmailxkèm theo RH-alikes có -afile đính kèm tập tin, nhưng một trong những bao gồm trong Debian-alikes không.
DopeGhoti

0

Tôi muốn thêm một câu trả lời khác được sử dụng để thêm văn bản cơ thể cùng với tệp đính kèm. Chúc mừng !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.