Làm thế nào để gửi thư từ dòng lệnh?


215

Làm thế nào để gửi thư từ dòng lệnh?



1
Bạn cũng có thể sử dụng thông.
Kaveh

1
Bạn cũng có thể cài đặt msmtp và làm theo các hướng dẫn được mô tả trong ArchWiki
Thiago Perrotta

2
Thật tệ khi câu trả lời cho điều này đã quá lỗi thời. Đây là một câu hỏi quan trọng có thể sử dụng một hướng dẫn tốt
6005

Câu trả lời:


36

Hãy thử cài đặt Ứng dụng khách Mutt E-mail . Tùy chọn khác là sử dụng emacs với gnus . Các tùy chọn khác cũng có sẵn ... IMHO, bạn nên sử dụng nhiều chi tiết hơn trong các câu hỏi của mình hoặc một số câu trả lời khác nhau cho câu hỏi của bạn mà bạn sẽ nhận được :-)


2
Đã chấp nhận điều này vì nó không yêu cầu bất kỳ cấu hình nào và khá thân thiện với người dùng.
Olivier Lalonde

21
chờ đợi. mutt - người dùng thân thiện? cuốn sách hay nhất mà tôi đã đọc hôm nay :)
Stann

155
  1. Cài đặt ssmtp Cài đặt ssmtp :

    sudo apt-get install ssmtp
    
  2. Chỉnh sửa tập tin cấu hình ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Nối văn bản sau:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Chạy ssmtp và cung cấp địa chỉ email người nhận:

    ssmtp recepient_name@gmail.com
    
  5. Cung cấp các chi tiết tin nhắn như sau:

    To: recipient_name@gmail.com
    From: username@gmail.com
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Nhấn Ctrl+ Dđể gửi.


Bạn cũng có thể đặt văn bản trong tệp và gửi nó như sau:

ssmtp recipient_name@gmail.com < filename.txt

29
Nó cảm thấy wierd để lại mật khẩu email của tôi bị lộ trong một số tập tin trên máy tính. Cái này có an toàn không?
tải

2
@oadams không an toàn lắm. Sử dụng xác minh 2 bước để giảm rủi ro hoặc sử dụng cổng thư không yêu cầu mật khẩu, như ISP của bạn.
itadok

5
Không cài đặt ssmtp trên máy chủ có cài đặt postfix. Postfix sẽ bị xóa. Thay vào đó, chỉ cần sử dụng sendmail user@example.com <file.txt sẽ hoạt động với cả postfix hoặc ssmtp.
Alistair Buxton

2
Một điều kỳ lạ khác mà tôi muốn chia sẻ ở đây là, nó không hoạt động với tôi khi tôi có mật khẩu dài / phức tạp nhưng hoạt động khi tôi sửa nó thành mật khẩu đơn giản, lạ nhưng đúng. Tôi cũng đã nghe điều tương tự từ một người khác nhưng đã thử nó sau nhiều nỗ lực gửi thư không thành công & ngay khi tôi đơn giản hóa mật khẩu, thật ngạc nhiên, nó chỉ hoạt động;)
Rajat Gupta

Nếu Gmail không cho phép máy chủ của bạn truy cập, hãy đăng nhập vào Gmail trên máy chủ bằng trình duyệt dòng lệnh. Askubfox.com/questions/460022/USE-terminal-as-a-web-browser
Sanghyun Lee

87

Hầu hết thời gian bạn không cần phải định cấu hình máy chủ SMTP, bạn chỉ cần sử dụng mailtừ dòng lệnh (nếu nó chưa có sẵn, hãy cài đặt với sudo apt-get install mailutils). (Hoặc nếu bạn đang ở trên máy chủ nơi sendmail được định cấu hình, v.v.)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Bạn chấm dứt tin nhắn với một .dòng trên. Đó là khi nào mailsẽ nhắc bạn Cc:nhập thông tin (hoặc để trống) và mailsau đó sẽ in ra thông tin bổ sung về những gì nó đang cố gắng làm, cũng như chi tiết xử lý kết nối, truyền và nhận dữ liệu từ máy chủ thư.


28
Tôi sẽ thêm câu trả lời để bao gồm "sudo apt-get install mailutils" vì nó không có trên bản cài đặt Ubuntu 10.04 sạch. Ngoài ra, chấm dứt tin nhắn với a. trên một dòng không hoạt động. Tôi đã phải "Ctrl-D" thay thế. Cuối cùng, tin nhắn đã không đi qua!
Olivier Lalonde

7
@OlivierLalonde sudo apt-get install mailutilssẽ cài đặt một máy chủ SMTP postfix, một số người có thể hơi quá cân đối với một số người.
vaab

5
mailutils cũng sẽ cài đặt mysql!
chmike

17
-v tùy chọn không có trong cài đặt thư 2.99,98 của tôi, cũng phải sử dụng Ctrl + D để kết thúc
markmnl

2
Hãy cập nhật câu hỏi này, nó đã lỗi thời.
phil294

47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

sử dụng:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 

Nếu bạn không muốn chỉ định mật khẩu của mình trong dòng lệnh (thường không phải là điều nên làm), bạn có thể bỏ qua tham số đó và sendemail sẽ nhắc bạn nhập mật khẩu ... và hiển thị nó trên màn hình, nhưng ít nhất là nó sẽ không có trong lịch sử dòng lệnh của bạn.


Gửi thư từ tài khoản GMail bằng cách sử dụng sendmailchắc chắn nhất rất tiện dụng. Cảm ơn bạn.
Đánh dấu Tomlin

Tìm một bản vá ở đây để không lặp lại mật khẩu.
Arun

Tôi đã phải xác định cổng với -s smtp.gmail.com:587.
Joe Mornin

5
thêm một khoảng
trắng

một cách khác để không hiển thị nó trên màn hình bash: lưu mật khẩu vào một tệp, sau đó từ tệp sang biến môi trường, ví dụ: pass=$(cat my_password); sendemail... -xp $name ...và tất nhiên nếu bạn gọi nó bằng lập trình, bạn có thể làm điều gì đó tương tự, ví dụ: ruby system("sendemail ... -xp #{File.read 'my_password'}...")cũng có thể thất bại Lần đầu tiên, bạn nên nhận email đến tài khoản đó đề nghị bạn "bật ứng dụng kém an toàn hơn" để nó có thể hoạt động.
rogerdpack

23

mpack là cách tuyệt vời để gửi tệp đính kèm.

apt-get install mpack

sử dụng:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn

20

Bạn cần một MTA để gửi thư. Đối với điều này, sử dụng postfix:

sudo apt-get install postfix

Để gửi email:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com

CỨU GIÚP


Bạn cũng cần cài đặt mailutils cho mailx, phải không?
Nick

4
Tôi ước nó thực sự đơn giản, nhưng trừ khi bạn là một người rất đặc biệt, điều này sẽ không hiệu quả. 99.9999% ISP sẽ bỏ qua thư từ các máy chủ postfix riêng, bởi vì 9,999999 lần trong số 10 người gửi thư rác.
Cerin

Điều này không làm việc cho tôi, nó yêu cầu cài đặt mailutilskhi tôi nhập cái này vào thiết bị đầu cuối
Mostafiz Rahman

Đi trước và cài đặt mailutils. Bạn không cần hậu tố IIRC.
uav

@Cerin nói đúng. Tôi cần chức năng gửi thư rất đơn giản cho một công việc cron mặc dù. Như một giải pháp thay thế, nếu bạn nhận được thông qua tài khoản gmail, bạn có thể thiết lập bộ lọc cho email (thông qua từ khóa hoặc từ địa chỉ) và gmail sẽ cho phép nó được gửi.
Carrie Kendall

15

Cài đặt gói sendmailrồi gõ

sendmail -t receiver@example 

sau đó viết email của bạn sau đó nhấn Ctrl + D


10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

hoặc là

cat "afile" | mail -s "subject" someone@dest_email.com

chỉ để thêm vào để kiểm tra dễ dàng: echo "Hello world!" | mail -s "Xin chào" mail@example.org
Bohne

2
Nếu ai đó không có lệnh thư, chỉ cần chạy: sudo apt-get install mailutilstrong Ubuntu / Debian hoặc yum install mailxtrong CentOS / Redhat
Giovanni Benussi

9

Bạn có thể gửi một email từ dòng lệnh với telnet hoặc netcat .

Tất cả mọi thứ được giải thích ở đây .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404

2
Sử dụng SSL hơi khó khi sử dụng phương pháp này;)
iX3

1
@ iX3 chỉ cần sử dụng swaksvà bạn cũng ổn với SSL / TLS ;-)
Germar

Hoặcopenssl s_client -starttls smtp ...
Raman

7

Nếu bạn cố gửi e-mail từ một hệ thống, whitch không chạy máy chủ e-mail riêng (tức là hệ thống máy tính để bàn), bạn cần cài đặt một cái gì đó như nullmailer hoặc esmtp , để chuyển tiếp thư cục bộ của bạn sang thư "thực" người phục vụ.

Là công cụ dòng lệnh, bạn có thể cài đặt mail hoặc mailx (gói mailutils, heirloom-mailx hoặc bsd-mailx). Nếu bạn cần tệp đính kèm hãy thử biabam.


1
Tôi thích bsd-mailx cho lệnh -E và cronjobs
meffect

6

Tôi chưa bao giờ thử nó nhưng có một maillệnh có thể gửi thư. Xem thư người đàn ông .

Để kiểm tra email địa phương:

echo message | mail username@localhost

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

nơi filenamelà như nhau: nó là viết tắt của tập tin đầu vào và tập tin từ xa.


sudo apt-get install sharutilschouuencode
Janus Troelsen

1
mailutils cài đặt mysql! oO
chmike

3

Bạn có thể thử điều này:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Nó hoạt động với GNU Mailutils , kiểm tra trang web để biết thêm thông tin.


2

Chạy :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

Những điều sau đây cần được thêm vào:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Chạy :

sudo -H gedit /etc/ssmtp/revaliases

Nhập vào đó:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587

Bật "ứng dụng kém an toàn" trên Gmail:
https://support.google.com/accountsals/6010255?hl=vi

Kiểm tra nó bằng cách chạy như sau trên thiết bị đầu cuối:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`

1

Ngoài ra, tôi vẫn nhận được lỗi này.

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

GIẢI PHÁP: thực hiện đặt lại mật khẩu gmail ngay cả khi mật khẩu hiện tại là chính xác ... có thể là biện pháp phòng ngừa bảo mật của Google

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.