bash でクリーンでシンプルなアプローチが必要で、cat
を使用したくない場合 、 echo
など、最も簡単な方法は次のとおりです:
mail -s "subject here" example@unixlinux.online <<< "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: example@unixlinux.online" > /tmp/mailtest
echo "To: example@unixlinux.online" >> /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" example@unixlinux.online
man mail
詳細については