コマンドラインからメールを送信する方法は?


215

コマンドラインからメールを送信する方法は?



1
松を使用することもできます。
カベ

1
msmtpをインストールして、ArchWiki
Thiago Perrotta 14

2
これに対する答えがあまりにも古くなっているのは残念です。それは良いチュートリアルを使用することができ、重要な質問です
6005

回答:


36

Mutt E-mail Clientをインストールしてみてください。他のオプションは、gnusで emacsを使用することです。他のオプションも利用できます...私見、あなたはあなたの質問でより多くの詳細、またはあなたが受け取るあなたの質問へのいくつかの異なる答えを使うべきです:-)


2
設定を必要とせず、非常に使いやすいため、これを受け入れました。
オリビエラロンド

21
待つ。mutt-ユーザーフレンドリー?今日読んだクレイジーなワンライナー:)
スターン

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をインストールしないでください。Postfixは削除されます。代わりに、postfixまたはssmtpで動作するsendmail user@example.com <file.txtを使用してください。
アリステアバクストン

2
ここで共有したい別の奇妙なことは、長い/複雑なパスワードを持っているときは私にとっては機能しませんでしたが、奇妙だが真実の単純なパスワードに変更したときは機能しました 私も他の誰かから同じことを聞いたが、私は私の驚きに、パスワードを簡素化するとすぐにメール&を送信するために失敗した試みの多くの後にそれを試してみました、それだけで働いていた;)
ラジャット・グプタに

Gmailでサーバーへのアクセスが許可されていない場合は、コマンドラインブラウザーを使用してサーバー上のGmailにログインします。askubuntu.com/questions/460022/using-terminal-as-a-a-web-browser
サンヒョンリー

87

ほとんどのmail場合、コマンドラインから単純に使用できるSMTPサーバーを構成する必要はありません(まだ存在しない場合は、でインストールします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
Ubuntu 10.04のクリーンインストールには存在しないため、「sudo apt-get install mailutils」を含めるように回答を追加します。また、でメッセージを終了します。単一行では機能しませんでした。代わりに「Ctrl-D」を押す必要がありました。最後に、メッセージは通過しませんでした!
オリビエラロンド

7
@OlivierLalonde sudo apt-get install mailutilsはSMTPサーバーをインストールしますがpostfix、これは一部の人にとっては少し過負荷になるかもしれません。
vaab

5
mailutilsはmysqlもインストールします!
chmike 14

17
メール2.99.98のインストールにない-vオプションも、Ctrl + Dを使用して終了する必要がありました
markmnl

2
この質問を更新してください、それは時代遅れです。
phil294

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 

コマンドラインでパスワードを指定したくない場合(一般的には良いことではありません)、そのパラメーターを省略できます。sendmailはパスワードの入力を求めます...コマンドラインの履歴には含まれません。


sendmail最も確実な方法を使用して、GMailアカウントからメールを送信することは非常に便利です。ありがとうございました。
マークトムリン

パスワードをエコーし​​ないように、ここでパッチを見つけてください
アルン

でポートを指定する必要がありました-s smtp.gmail.com:587
ジョーモーニン

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が必要です。これには、後置を使用します。

sudo apt-get install postfix

メールを送信するには:

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

助けて


mailxのmailutilsもインストールする必要がありますか?
ニック14

4
本当にこんなに単純なものであったらいいのですが、あなたが特別な人でない限り、これはうまくいきません。ISPの99.9999%は、プライベートPostfixサーバーからのメールを無視します。これは、10分の9.99999がスパマーであるためです。
セリン

これが私のために動作しませんでした、それはインストールするように求めmailutils、私は、端末にこれを入力するとき
Mostafizラーマン

さあ、mailutilsをインストールしてください。後置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

簡単にテストするために追加するだけです。「Hello world!」とエコーします。| mail -s "Hello" mail@example.org
Bohne

2
誰かがメールコマンドを持っていない場合は、単に実行します:sudo apt-get install mailutilsUbuntuの/ Debianではまたはyum install mailxCentOSの/ RedHatの中
ジョバンニ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 ...
ラマン

7

システムから電子メールを送信する場合、独自の電子メールサーバー(デスクトップシステム)を実行しないため、ローカルメールを「実際の」メールに転送するnullmaileresmtpなどをインストールする必要があります。サーバ。

コマンドラインツールとして、mailまたはmailx(パッケージmailutils、heirloom-mailxまたはbsd-mailx)をインストールできます。添付ファイルが必要な場合は、biabamを試してください。


1
私は-Eコマンドとcronジョブのための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
ヤヌストロエルセン

1
mailutilsはmysqlをインストールします!オブジェクト指向
chmike

3

これを試すことができます:

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

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

EOF

GNU Mailutilsで動作します。詳細については、Webサイトを確認してください。


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=ja

ターミナルで次を実行してテストします。

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.