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


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: 

단일 .온라인으로 메시지를 종료합니다 . 이때 정보 mail를 Cc:입력 하라는 메시지 가 표시되면 (또는 비워 두십시오.) 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.