著者は自発的にPepipost Write To Contributeプログラムの一部としてこのチュートリアルを寄稿しました。

はじめに

通知は、様々なオンライン活動の中で更新された滞在するために、これらの日より重要になっています。 また、これらの通知は、電子メール、SMSまたはプッシュすることができます。 このチュートリアルでは、電子メールで最も人気のあるチャネルの1つで、通知を送信する最も簡単な方法を説明します。 一般的なCLIツールのいくつかを使用して、端末から電子メールを送信するプロセスやLinuxオペレーティングシステムからシェルスクリプトを学習します。

このチュートリアルでは、Cronレポート、スクリプトログ、顧客登録、領収書、銀行取引明細書などの重要なサーバーレベルの電子メールを電子メールで送信するのに役立 サーバーからメールを送信するには多くの方法がありますが、インストールが簡単でコーディングが簡単なツールを見てみましょう。

シンプルなライブラリと小さな設定を使用すると、端末からメールを送信するために使用できるLINUX OSのCLIツールを持つことができます。

前提条件

  • Linuxオペレーティングシステム
  • SMTP設定(SMTPサーバーの詳細と認証資格情報)
  • お気に入りのエディタ(オプション)
  • Gmail SMTP/readyを他のカスタムSMTPサーバー このチュートリアルでは、Gmail SMTPを使用して電子メールを送信するので、次のことを確認してください;
    undefinedundefined

Google SMTPサーバーの設定は次のようになります:

  • SMTPサーバー/ホスト名:smtp.gmail.com
  • SMTPユーザー名:
  • SMTPパスワード:
  • SMTPポート:587
  • TLS/SSL:必須

ターミナルを開くまでの時間

ターミナルからメールを送信するためにインストールできる様々なツールやライブラリがあります。 人気のある図書館のいくつかは次のとおりです:このチュートリアルでは、sSMTPをインストールして使用してLinuxコマンドラインからメールを送信する方法の手順を学習します。 Mailxをインストールして使用してLinuxコマンドラインからメールを送信する方法を学びたい場合は、ここをクリックしてください。Linuxコマンドライン(CLI)からメールを送信するには、sSMTPをインストールする方法

ステップ1

以下のコマンドを使用してssmtpをインストールします。:

sudo apt-get install ssmtp

オプション:
CentOSユーザーは以下のコマンドを使用してssmtpをインストールできます:

sudo yum install ssmtp

CentOSでは、インストール中に”package ssmtp is not available”というエラーが表示されることがあります。:

sudo yum --enablerepo=extras install epel-release

ステップ2

ssmtpが正常にインストールされたら、メールを送信するために必要な以下のグローバル設定を行う必要があります。

お気に入りのエディタで次のファイルを開きます:

sudo vim /etc/ssmtp/ssmtp.conf

上記のファイルを以下の詳細で編集します:

mailhub=smtp.gmail.com:587useSTARTTLS=YESAuthUser=username-hereAuthPass=password-hereTLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

上記の設定は、Gmail SMTPを使用して電子メールを送信するために使用されます。 他のサードパーティのSMTPを使用する場合は、同じホスト名を指定します。 たとえば、Pepipost SMTPを使用する場合は、代わりにsmtp.gmail.com、あなたは言及する必要がありますsmtp.pepipost.com mailhubパラメータで。 mailhubは、2つの部分で構成されるSMTPサーバーアドレスに使用されますhost:port

これで、すべてコマンドライン(CLI)からメールを送信するように設定されました。

ステップ3

ssmtpコマンドを使用して電子メールを送信するには、複数の方法があります。

ケース1: コマンドラインから直接メールを送信

このためには、以下のコマンドをコピーして貼り付けると、コマンドラインからメールを送信する準備が整いま:

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv 

-Vvvは、メールの送信中にログを表示する冗長性です

ケース2:シェルスクリプトからメールを送信

同じssmtpを使用して、シェルスクリプトからメールを送信す そのためには、お好みのエディタを開き、saymailという名前のシェルスクリプトファイルを作成します。shandコピー-以下のコードを貼り付けます:

#!/bin/sh SUBJECT="Test Subject"TO=""MESSAGE="Hey There! This is a test mail"echo $MESSAGE | sudo ssmtp -vvv $TO

スクリプトファイルへの適切なアクセス許可が設定されていることを確認してください。 そうでない場合は、権限を設定するコマンドを次に示します:

$ sudo chmod 755 mail.sh 

これで、コードを実行する準備が整いました。 以下のコマンドを使用してシェルスクリプトを実行するだけです:

$ sudo ./mail.sh

今、あなたもシェルスクリプトを使用してメールを送信することができます願っています。

以下は、ssmtpを使用してメールを送信しているときに発生する可能性のあるエラー/例外です。

エラー1

電子メールを送信しているときに、以下のエラーが出力104-gsmtp)

 220 smtp.gmail.com ESMTP u65sm14952769pfu.104 - gsmtp EHLO kali 250 SMTPUTF8 STARTTLS 220 2.0.0 Ready to start TLS EHLO kali 250 SMTPUTF8 AUTH LOGIN 334 VXNlcm5edhbAWU6 dmlzaGFsY2hhasd2dWhhbjIyMTJAZ21haWwuY29t 334 EUEeGFzc3dvfcaqQ6 535 5.7.8 https://support.google.com/mail/?p=BadCredentials u65smyez14952a76922r5pfui.104 - gsmtpssmtp: Authorization failed (535 5.7.8 https://support.google.com/mail/?p=BadCredentials u65smyez14952a76922r5pfui.104 - gsmtp):~/Documents/Scripts$ 

ソリューション: そのような場合は、解決策として次のようにしてみてください:

  1. 上記の前提条件のセクションで説明したように、googleアカウントの設定で”安全性の低いアプリを許可する”を有効にします。
  2. 指定されたログイン資格情報が無効になる可能性があります。 正しい資格情報を持っていることを確認してください。

問題が修正されたら、シェルスクリプトを再実行すると、成功の出力は次のようになります;

$ sudo ./mail.sh

出力:

 220 smtp.gmail.com ESMTP h8sm1096aae22880pfo.64 - gsmtp EHLO kali 250 SMTPUTF8 STARTTLS 220 2.0.0 Ready to start TLS EHLO kali 250 SMTPUTF8 AUTH LOGIN 334 VXNlcm5edhbAWU6 dmlzaGFsY2hhasd2dWhhbjIyMTJAZ21haWwuY29t 334 UGFzqc3dmvcmQ36 235 2.7.0 Accepted MAIL FROM:<> 250 2.1.0 OK h8smqer10962480pfo.64 - gsmtp RCPT TO:<> 250 2.1.5 OK h8smqer10962480pfo.64 - gsmtp DATA 354 Go ahead h8sm10962880pfo.64 - gsmtp Received: by kali (sSMTP sendmail emulation); Thu, 19 Sep 2019 21:45:14 +0530 From: "root" <> Date: Thu, 19 Sep 2019 21:45:14 +0530 Hey There! This is a test mail . 250 2.0.0 OK 1568909725 h8smqer10962480pfo.64 - gsmtp QUIT 221 2.0.0 closing connection h8smqer10962480pfo.64 - gsmtp

結論

コメントを残す

メールアドレスが公開されることはありません。