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

Linux シェルスクリプトからメールを送信する

bash でクリーンでシンプルなアプローチが必要で、cat を使用したくない場合 、 echo など、最も簡単な方法は次のとおりです:

mail -s "subject here" [email protected] <<< "message"

<<< 標準入力をリダイレクトするために使用されます。これは長い間 bash の一部でした。


exim と ssmtp の両方が実行されている場合、問題が発生する可能性があります。したがって、単純な MTA を実行したいだけで、単純な smtp クライアントを使用して主張のために電子メール通知を送信したい場合は、最終的にプレインストールされた MTA を exim のように消去する必要があります。 または後置 最初に ssmtp を再インストールします。

次に、2 つのファイル (revaliases と ssmtp.conf) のみを構成することは非常に簡単です - ssmtp doc を参照してください - そして、bash または bourne スクリプトでの使用法は次のようになります:

#!/bin/sh  
SUBJECT=$1  
RECEIVER=$2  
TEXT=$3  

SERVER_NAME=$HOSTNAME  
SENDER=$(whoami)  
USER="noreply"

[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"  
[[ -z $2 ]] && RECEIVER="another_configured_email_address"   
[[ -z $3 ]] && TEXT="no text content"  

MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"  
echo -e $MAIL_TXT | sendmail -t  
exit $?  

もちろん、ファイアウォールの出力を smtp ポート (25) に開くことを忘れないでください。


bash スクリプトの別のオプション:

mailbody="Testmail via bash script"
echo "From: [email protected]" > /tmp/mailtest
echo "To: [email protected]" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
  • ファイル /tmp/mailtest このスクリプトが使用されるたびに上書きされます。
  • sendmail の場所はシステムごとに異なる場合があります。
  • これを cron スクリプトで使用する場合、sendmail コマンドの絶対パスを使用する必要があります。

サーバーが適切に構成されている場合 (MTA が稼働している場合など) は、mail コマンドを使用するだけです。

たとえば、ファイルの内容を送信するには、次のようにします:

$ cat /path/to/file | mail -s "your subject" [email protected]

man mail 詳細については


Linux
  1. シェルスクリプトがメールコマンドでハングアップしますか?

  2. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  3. UNIX / Linux :/tmp および /var/tmp ディレクトリの正しい権限は何ですか

  1. シェルスクリプトを使用して HTML メールを送信する

  2. シェル スクリプトを使用してユーザーを sudoers に追加する

  3. Linuxシェルスクリプトに新しい行を挿入するには?

  1. Linux シェルの音訳スクリプト

  2. デフォルトの /tmp を /home/user/tmp に変更する方法

  3. /tmp と /var/tmp の違いと正しい使い方