커맨드 라인에서 메일을 보내는 방법?


215

커맨드 라인에서 메일을 보내는 방법?


1
ubuntuforums.org/showthread.php?t=780509 가 도움이 될 수 있습니다.
사용자

1
소나무도 사용할 수 있습니다.
Kaveh December

1
msmtp를 설치하고 ArchWiki
Thiago Perrotta

2
이것에 대한 답변이 너무 오래되었습니다. 좋은 튜토리얼을 사용할 수있는 중요한 질문입니다
6005

답변:


36

Mutt E-mail Client 를 설치하십시오 . 다른 옵션은 gnus 와 함께 emacs를 사용하는 것 입니다. 다른 옵션도 가능합니다 ... IMHO, 질문에 더 자세한 내용을 보거나 질문에 대한 몇 가지 다른 답변을 사용해야합니다 :-)


2
구성이 필요하지 않으며 사용자에게 친숙하기 때문에이 항목을 승인했습니다.
Olivier Lalonde

21
기다림. 음소거-사용자 친화적? 내가 오늘 읽은 가장 미친 라이너 하나 :)
Stann

155
  1. ssmtp를 설치하십시오 ssmtp 설치.

    sudo apt-get install ssmtp
    
  2. ssmtp 구성 파일을 편집하십시오.

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. 다음 텍스트를 추가하십시오.

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. ssmtp를 실행하고 수신자 이메일 주소를 제공하십시오.

    ssmtp recepient_name@gmail.com
    
  5. 다음과 같이 메시지 세부 사항을 제공하십시오.

    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. Ctrl+ D를 눌러 전송합니다.


텍스트를 파일에 넣고 다음과 같이 보낼 수도 있습니다.

ssmtp recipient_name@gmail.com < filename.txt

29
컴퓨터의 일부 파일에 내 이메일 비밀번호가 노출 된 상태로 유지해야합니다. 안전한가요?
oadams

2
@oadams는 안전하지 않습니다. 2 단계 인증을 사용하여 위험을 줄이거 나 ISP와 같이 암호가 필요없는 메일 게이트웨이를 사용하십시오.
itsadok

5
postfix가 설치된 서버에 ssmtp를 설치하지 마십시오. 접미사가 제거됩니다. 대신 postmail user@example.com <file.txt를 사용하십시오. postfix 또는 ssmtp와 함께 작동합니다.
Alistair Buxton

2
여기에서 공유하고 싶었던 또 다른 이상한 점은 길고 복잡한 암호가있을 때 작동하지 않지만 이상한 암호이지만 이상한 암호로 수정하면 효과가 있다는 것입니다. 나는 또한 다른 사람 에게서도 같은 소식을 들었지만 메일을 보내지 못한 많은 시도 후에 그것을 시도했다. 그리고 비밀번호를 단순화하자마자 놀랐다.)
Rajat Gupta

Gmail에서 서버에 액세스 할 수없는 경우 명령 줄 브라우저를 사용하여 서버에서 Gmail에 로그인하십시오. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
이상현

87

대부분의 경우 SMTP 서버를 구성 할 필요가없는 mail경우 명령 줄에서 간단히 사용할 수 있습니다 (아직없는 경우 설치 sudo apt-get install mailutils). (또는 sendmail이 구성된 서버에있는 경우 등)

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

Hope all is well.
.
Cc: 

단일 .온라인으로 메시지를 종료합니다 . 이때 정보 mailCc:입력 하라는 메시지 가 표시되면 (또는 비워 두십시오.) mail메일 서버에서 데이터 연결, 전송 및 수신 처리에 대한 세부 정보뿐만 아니라 수행하려는 작업에 대한 추가 정보를 인쇄합니다.


28
"sudo apt-get install mailutils"가 깨끗한 Ubuntu 10.04 설치에 없으므로 답변을 추가합니다. 또한로 메시지를 종료합니다. 한 줄로 작동하지 않았습니다. 대신 "Ctrl-D"를 사용해야했습니다. 마지막으로 메시지가 전달되지 않았습니다!
Olivier Lalonde

7
@OlivierLalonde sudo apt-get install mailutils는 SMTP 서버를 설치하는데 postfix,이 서버는 일부 사람들에게는 약간 과체중이 될 수 있습니다.
vaab

5
mailutils도 mysql을 설치합니다!
chmike

17
메일 2.99.98을 설치할 때 -v 옵션을 사용하지 않으면 Ctrl + D를 사용하여 종료해야합니다.
markmnl

2
이 질문을 업데이트하십시오. 구식입니다.
Blauhirn

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

용법:

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 

명령 행에서 비밀번호를 지정하지 않으려면 (일반적으로 좋은 일이 아님) 해당 매개 변수를 생략하면 sendemail에서 비밀번호를 묻는 프롬프트를 표시하고 화면에 표시하지만 명령 행 히스토리에는 없습니다.


sendmail가장 확실한 방법으로 Gmail 계정에서 메일을 보내는 것이 매우 편리합니다. 감사합니다.
Mark Tomlin

비밀번호를 에코하지 않으려면 여기 에서 패치를 찾으십시오 .
Arun

로 포트를 지정해야했습니다 -s smtp.gmail.com:587.
Joe Mornin 2016 년

5
명령 행 히스토리에 저장하지 않으려면 명령 행 앞에 공백을 추가하십시오.
guhur

bash 화면에 암호를 표시하지 않는 또 다른 방법 : 파일에 암호를 저장 한 다음 파일에서 환경 변수로 예를 들어 : pass=$(cat my_password); sendemail... -xp $name ...프로그래밍 방식으로 호출하면 비슷한 것을 수행 할 수 있습니다 system("sendemail ... -xp #{File.read 'my_password'}..."). 처음에는 해당 계정으로 "보안 수준이 낮은 앱 사용"을 제안하는 이메일을 보내야 작동합니다.
rogerdpack

23

mpack은 파일 첨부 파일을 보내는 훌륭한 명령 줄 방법입니다.

apt-get install mpack

용법:

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

20

메일을 보내려면 MTA가 필요합니다. 이를 위해 postfix를 사용하십시오.

sudo apt-get install postfix

이메일을 보내려면 :

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

도움


mailx 용 mailutils도 설치해야합니까?
Nick

4
나는 이것이 정말로 간단하기를 원하지만, 당신이 매우 특별한 사람이 아니라면 이것은 효과가 없을 것입니다. ISP의 99.9999 %는 개인 postfix 서버의 메일을 무시합니다. 10 개 중 9.99999 번이 스패머이기 때문입니다.
Cerin

이 나를 위해 작동하지 않았다, 그것은 설치하라는 mailutils나는 터미널에이 들어갔을 때
Mostafiz 라흐만에게

계속해서 mailutils를 설치하십시오. postfix IIRC가 필요하지 않습니다.
uav

@Cerin이 맞습니다. cron 작업에는 매우 간단한 메일 기능이 필요했습니다. 해결 방법으로, gmail 계정을 통해 수신하는 경우 전자 메일에 대한 필터 (키워드 또는 보낸 사람 주소를 통해)를 설정하면 gmail이이를 보낼 수 있습니다.
캐리 켄달

15

패키지 sendmail를 설치 한 후 다음을 입력하십시오.

sendmail -t receiver@example 

이메일을 작성한 다음 Ctrl + D를 누릅니다.


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

또는

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

쉬운 테스트를 위해 추가하기 만하면됩니다 : echo "Hello world!" | mail -s "Hello"mail@example.org
Bohne

2
누군가가 메일 명령이없는 경우 바로 실행 sudo apt-get install mailutils우분투 / 데비안이나 yum install mailxCentOS는 / 레드햇에서
조반니 Benussi

9

TelNet 또는 NetCat 명령 행에서 이메일을 보낼 수 있습니다 .

모든 것이 여기 에 설명되어 있습니다 .

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
이 방법을 사용할 때 SSL을 사용하는 것은 조금 어렵습니다;)
iX3

1
@ iX3는 그냥 사용 swaks하고 SSL / TLS도 괜찮습니다. ;-)
Germar

또는openssl s_client -starttls smtp ...
Raman

7

시스템에서 전자 메일을 보내려고 할 때 자체 전자 메일 서버 (예 : 데스크톱 시스템)를 실행하지 않으면 nullmailer 또는 esmtp 와 같은 것을 설치해야 합니다. 로컬 메일을 "실제"메일로 전달합니다. 섬기는 사람.

명령 행 도구로서 mail 또는 mailx (mailutils, heirloom-mailx 또는 bsd-mailx 패키지)를 설치할 수 있습니다. 첨부 파일이 필요한 경우 biabam을 사용해보십시오.


1
나는 -E 명령과 cronjobs에 대해 bsd-mailx를 좋아합니다
meffect

6

나는 그것을 시도한 적이 없지만 mail메일을 보낼 수 있는 명령이 있습니다. man mail을 참조하십시오 .

로컬 이메일을 테스트하려면

echo message | mail username@localhost

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

경우는 filename동일합니다 : 그것은 입력 파일과 원격 파일을 의미합니다.


sudo apt-get install sharutils대한uuencode
야누스 Troelsen

1
mailutils가 mysql을 설치합니다! oO
chmike

3

당신은 이것을 시도 할 수 있습니다 :

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

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

EOF

GNU Mailutils 와 함께 작동 합니다. 자세한 내용은 웹 사이트를 확인하십시오.


2

실행 :

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

여기에 다음을 추가해야합니다.

# 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

실행 :

sudo -H gedit /etc/ssmtp/revaliases

거기에 입력하십시오 :

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

Gmail에서 "안전하지 않은 앱" 을 사용하도록 설정 :
https://support.google.com/accounts/answer/6010255?hl=ko

터미널에서 다음을 실행하여 테스트하십시오.

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

1

위의 것 외에도 여전히이 오류가 발생했습니다.

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)

해결 방법 : 현재 비밀번호가 올바른 경우에도 Gmail 비밀번호 재설정을 수행하십시오 ... Google 보안 예방 조치

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.