Làm thế nào để gửi email từ Terminal?


169

Tôi biết có nhiều cách để gửi email từ thiết bị đầu cuối trong Linux / MacOS, nhưng dường như tôi không thể tìm thấy tài liệu phù hợp về cách thực hiện điều đó.

Về cơ bản tôi cần nó cho tập lệnh bash thông báo cho tôi mỗi khi có thay đổi trong một tập tin.


3
Có lẽ cần lưu ý ở đây rằng một số máy chủ và ISP "tắt" khả năng gửi email của bạn. Tôi cho rằng đó là một nỗ lực để ngăn chặn mọi người spam và lừa đảo thông qua họ
Jim Jeffries

@JimJeffries Những cái nào? Tôi đang sử dụng máy chủ web Amazon EC2.
ckjbgames

Câu trả lời:


125

Đi vào Terminal và gõ man mailđể được giúp đỡ.

Bạn sẽ cần phải thiết SMTPlập:

http://hints.macworld.com/article.php?story=20081217161612647

Xem thêm:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Ví dụ:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

Điều này sẽ gửi một email đến example@example.comvới chủ đề hellovà tin nhắn

xin chào

Thế giới


Tôi mới thử, và nó hiệu quả với tôi, nhưng tôi có hai câu hỏi vì sự tò mò của mình.1. << nghĩa là gì, trực tuyến Tôi đã thấy một số ví dụ với '<' hoặc '<<. ' Cái này được dùng để làm gì? Và tại sao bạn lại đưa End Of File ở đó và ở cuối tin nhắn?
Sâu

"<< EOF" và "EOF" đánh dấu "tài liệu ở đây". Văn bản giữa hai EOF được coi là một chuỗi trích dẫn nhiều dòng. Nó được mô tả trong 'man bash'
Joe Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
Lưu ý tất cả các giải pháp này giả sử bạn có MTA được cài đặt cục bộ
Miquel

11
@Miquel điểm tốt. Trong Ubuntu, bạn có thể có được các điều kiện tiên quyết thông qua sudo apt-get install mailutils.
Earldoumund

3
@James, Nó không hoạt động cho MAC của tôi ((Bạn có thể giúp tôi không?
neo

1
Hướng dẫn từng bước: rianjs.net/2013/08/ Mạnh
Dušan Maďar

Lạ thật. Điều này mang lại cho tôi thông báo "Cú pháp: cú pháp không hợp lệ" mặc dù thay đổi duy nhất mà tôi đã thực hiện là thay đổi địa chỉ.
Người Do Thái

41

Nếu tất cả những gì bạn cần là một dòng chủ đề (như trong một thông điệp cảnh báo) chỉ cần làm:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

Bạn có thể cần phải cài đặt mailutils. Nó có thể được cài đặt thông qua trình quản lý gói (ví dụ apt install mailutils:)
Jeevan Takhar

31

Có lẽ cách đơn giản nhất là sử dụng curlcho việc này, không cần phải cài đặt bất kỳ gói bổ sung nào và nó có thể được cấu hình trực tiếp trong một yêu cầu.

Dưới đây là một ví dụ sử dụng máy chủ gmail smtp:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

Đây là một lựa chọn thực sự tốt. Bạn có thể tạo mật khẩu dành riêng cho ứng dụng cho tài khoản Google của mình và điều này chỉ cung cấp email từ tài khoản của bạn. Rất tuyệt!
dakdad

2
Câu trả lời tuyệt vời, Cuối cùng đừng quên bật ứng dụng kém an toàn hơn để thực hiện công việc myaccount.google.com/lesssecurur lại
yubaraj poudel

@aliaksandr nên thêm điểm cuối cùng này vào câu trả lời của anh ấy. Theo mặc định, tùy chọn này (cấp quyền truy cập vào các ứng dụng kém an toàn hơn) bị vô hiệu hóa và nó không rõ ràng. Ít nhất nếu bạn đang sử dụng tài khoản gmail làm email người gửi.
EAmez

18

Nếu bạn muốn đính kèm một tệp trên Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

4
Nó đưa ra một invalid headerthông điệp cho tập tin đính kèm của tôi. Tùy chọn chính xác là một chữ hoa -A.
Stephane

3
@Stephane Theo patrick-haugh, -a là công tắc đính kèm. -A là cho lệnh tài khoản. Xem trang người đàn ông: linux.die.net/man/1/mailx
MiaeKim

10

trong thiết bị đầu cuối trên hệ điều hành mac os hoặc linux của bạn gõ mã này

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

cho một ví dụ thử cái này

mail -s "hi" abc@example.com <<< "how are you?"<br>

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.