gửi thư từ thiết bị đầu cuối linux trong một dòng [đóng]


148

Tôi biết có lệnh mailtrong linux để gửi email thông qua dòng lệnh. Làm thế nào tôi có thể gửi một email đơn giản với một dòng từ thiết bị đầu cuối?

Ví dụ:

mail user@gmail.com [subject] [body]

Và có email được gửi mà không có bất kỳ xác nhận hoặc nhắc nhở cho người dùng?

Lý do là, tôi muốn gửi một tin nhắn ngắn gọn qua email cho chính mình khi một sự kiện cụ thể xảy ra trong một javachương trình. Ý tưởng là tôi sẽ sử dụng, Runtime.getRuntime()v.v. để gửi mail commandtừ javachương trình của mình .

Tôi đã từng cronlàm một cái gì đó tương tự trong quá khứ, nhưng việc triển khai hiện tại không sử dụng cron, vì vậy tôi cần phải thử điều này thay thế.


Sử dụng bulk mail CLI, một công cụ hiệu quả và mạnh mẽ để gửi email động đến danh sách gửi thư chỉ bằng một lệnh đơn giản : bulkmail mail! Thực hiện tiếp thị qua email nhanh, nhỏ, không rắc rối với công cụ nhỏ nhưng mạnh mẽ này 💌 bulkmail.now.sh
Kumar Abhirup

Câu trả lời:


209

mail có thể đại diện cho một vài chương trình trên hệ thống linux. Những gì bạn muốn đằng sau nó là sendmail hoặc postfix . Tôi khuyên bạn nên sau.

Bạn có thể cài đặt nó thông qua trình quản lý gói yêu thích của bạn. Sau đó, bạn phải định cấu hình nó và khi bạn đã hoàn thành việc đó, bạn có thể gửi email như thế này:

 echo "My message" | mail -s subject user@gmail.com

Xem hướng dẫn để biết thêm thông tin.

Theo như cấu hình postfix, có rất nhiều bài viết trên internet về cách thực hiện. Trừ khi bạn đang ở trên một máy chủ công cộng có tên miền đã đăng ký, bạn thường muốn chuyển tiếp email đến máy chủ SMTP mà bạn có thể gửi email từ đó.

Ví dụ, đối với gmail, hãy theo dõi http://rtcamp.com/tutorials/linux/ubfox-postfix-gmail-smtp/ hoặc bất kỳ hướng dẫn tương tự nào khác.


4
Postfix rất mạnh nhưng nếu bạn chỉ cần gửi email hãy thử "ssmtp". Gói này nhỏ hơn và không chạy một daemon như postfix. Nó hỗ trợ các giao thức an toàn và hoạt động với gmail.
oᴉɹǝɥɔ

6
"Chương trình 'mail' hiện chưa được cài đặt. Bạn có thể cài đặt nó bằng cách gõ: apt-get install mailutils"
Tom

trọng lượng nhẹ hơn: gói nullmailercộng bsd-mailx. Đủ cho hầu hết các trạm làm việc :) Và như nullmailerbao gồm một sendmailgiao diện, bạn thậm chí có thể bỏ qua bsd-mailxgói và sử dụng phương pháp của Hengjie .
Izzy

@ oᴉɹǝɥɔ ssmtpbị phản đối. Sử dụng msmtpthay thế.
Matt M.


32
echo "Subject: test" | /usr/sbin/sendmail user@domain.com

Điều này cho phép bạn thực hiện nó trong một dòng lệnh mà không phải lặp lại tệp văn bản. Câu trả lời này được xây dựng dựa trên câu trả lời của @ mti2935. Vì vậy, tín dụng đến đó.


2
Chỉ cần thêm vào câu trả lời cho chủ đề và nội dung: echo -e "Chủ đề: test \ n \ n Nội dung cơ thể ở đây \ n" | sendmail user@domain.com
emvidi 14/12/17

13

Bạn cũng có thể sử dụng sendmail:

/usr/sbin/sendmail user@domain.com < /file/to/send

Lưu ý: Tôi có Postfix + S-Nail. Đây là những gì làm việc cho tôi. Đầu tiên tôi sử dụng câu trả lời "Rohit Gupta" và tải xuống các tiện ích thư, sau đó bạn và mọi thứ đều hoạt động.
Mohammed Baashar

13

Đối với người dùng Ubuntu: Trước tiên, bạn cần cài đặt mailutils

sudo apt-get install mailutils

Thiết lập một máy chủ email, nếu bạn đang sử dụng gmail hoặc smtp. theo liên kết này . sau đó sử dụng lệnh này để gửi email.

echo "this is a test mail" | mail -s "Subject of mail" username@domain.com

Trong trường hợp bạn đang sử dụng gmail và bạn vẫn gặp phải một số lỗi xác thực thì bạn cần thay đổi cài đặt của gmail:

Bật Access cho các ứng dụng kém an toàn hơn từ đây



-3

Gửi thư đơn giản:

$ mail -s "test message from centos" recipient@example.com
hello from centos linux command line

Ctrl+ Dđể kết thúc


2
anh ta đang hỏi về lệnh trên.
Rohit Gupta
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.