GNU/Linux >> Linux の 問題 >  >> Linux

mailコマンドを使用してLinuxターミナルまたはスクリプトから電子メールを送信する

sendmail、mutt、SSMTP、telnetなどの電子メールの送信にも使用できる端末ベースのコマンドラインクライアントは他にもありますが、このガイドではmailに焦点を当てます。 コマンド。

mailコマンドは、標準のsendmailバイナリ(/ usr / sbin / sendmail)を呼び出し、ローカルMTAに接続して、メールを宛先に送信します。ローカルMTAは、ポート25でメールを受け入れるローカルで実行されるSMTPサーバーです。

これは、メールコマンドを使用する予定のマシンでPostfixのようなSMTPサーバーが実行されている必要があることを意味します。何も実行されていない場合は、「send-mail:Cannot openmail:25」というエラーメッセージが表示されます。

インストール

次のコマンドでインストールします:

Ubuntuの場合

sudo apt-get install mailutils 

CentOS7の場合

sudo yum install -y mailx

centos 8 / Alma Linux / Rhel

の場合
sudo dnf install -y mailx

次のコマンドを使用して、コマンドが正常にインストールされていることをテストします。

mail

上記のコマンドは、現在のユーザーの電子メールがあるかどうかを確認します。次のような出力が表示されます:

➜ mail
No mail for centos

使用法

簡単なメールの送信

このコマンドを使用して、[email protected]にメールを送信します 。 -s コマンドライン引数は、件名を指定するためのものです。

mail -s "Test mail" [email protected]

上記のコマンドは、Enterキーを押すとブロックされ、メッセージの入力を待機します。完了したら、Ctrl-Dを使用します 完了し、メールを送信する準備ができたことをメールクライアントに通知します。

❯ mail -s "Test mail" [email protected]
Hey John,

Please remember to send me the Linux Book.

Regards,
Me.
EOT

EOT Ctrl-Dを押したときに入力されました 。これを行うと、mailコマンドはメッセージを配信用にディスパッチして完了します。

ファイルの内容を含むメッセージを送信する

このコマンドを使用して、ファイル/path/to/file.txtからメッセージを送信します。 。

mail -s "Test mail" [email protected] < /path/to/file.txt

この1つのライナーを使用して、コンテンツをエコーアウトして送信し、メールコマンドにパイプすることもできます。

echo "Hello world" | mail -s "Test mail" [email protected]

複数の受信者にメールを送信する

複数の受信者にメールを送信するには、次の例のように、カンマで区切られたメールのリストを使用できます。

echo "Hello world" | mail -s "Test mail" [email protected],[email protected]

CCおよびBCC受信者の追加

ブラインドカーボンコピー(BCC)およびカーボンコピー(CC)アドレスも添付できます。 -c <email>を使用します CCおよび-b <email>の場合 bccの場合。

この例では、CCとBCCを指定しています:

echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]

名前と住所から指定

オプション-rを使用できます 以下に示すように、差出人の名前とアドレスを指定します。

echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]

または、-aを使用することもできます メッセージに添付する追加のヘッダーを追加します。 FROMを提供する方法の例を次に示します。 その一環として。

echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]

from名を指定するには、次の構文を使用します。

echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>

シェルプロンプトに対して特別な意味があるため、小さい矢印と大きい矢印をエスケープする必要があることに注意してください。スクリプト内からコマンドを発行する場合は、それを省略します。

「返信先」アドレスを指定

replytoを使用する この例のようにアドレスへの返信を指定するには:

echo "Hello world" | mail -s "Test mail" [email protected] [email protected]

添付ファイル付きのメール

[email protected]からメールを送信する [email protected] アタッチメント付き。

mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,

Please find the file requested attached.

Kind Regards,
John.
EOF

ローカルシステムユーザーへのメール

ローカルシステムユーザーに電子メールを送信するには、受信者の代わりにユーザー名のみを指定します。ホスト名を追加できますが、@hostnameを使用する必要はありません。 。

mail -s "Test Subject" username 

Verboseの有効化

メールの処理中に何が起こっているかを確認する必要がある場合は、引数-vを使用して詳細出力を有効にします。 。これは、mailコマンドで使用されているSMTPコマンドを確認する場合などのトラブルシューティングに適しています。次に例を示します:

mail -v -s "Hello theere" [email protected] <<< 'This is the message' 

Linux
  1. Linuxコマンドラインから電子メールの添付ファイルを送信する4つの方法

  2. Linuxでmailxコマンドを使用して外部SMTPサーバー経由でメールを送信するにはどうすればよいですか?

  3. コマンド ラインから電子メールを送信するにはどうすればよいですか?

  1. Gmailを使用してコマンドラインから画像を添付してメールを送信する最も簡単な方法は?

  2. Linuxの「mail」コマンドを使用してHTMLメールを送信する方法は?

  3. Linux上の外部SMTPサーバーを使用してコマンドラインからメールを送信する

  1. Linuxのコマンドラインからメールを送信するための9つのmail/mailxコマンドの例

  2. SSMTPを使用してLinuxターミナルから電子メールを送信する方法

  3. mail コマンドを使用してメールを送信するときの from ユーザーを指定します。