ファイルを実行するcronコマンドがあり、メールで送信されるように出力を設定しようとしています。ダイレクトファイルを変更したくないサードパーティのスクリプトでこれを使用しているため、PHPを変更する代わりに出力をパイプ処理する必要があります。
mail
を使用するサーバーからsendmail
を使用するサーバーに移行しています。コマンドラインから件名をsendmailに正しく送信する方法を見つけるのに苦労しています。
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
/ usr/sbin/sendmail
それは間違っている。
どこかにmail
コマンドが必要です。 mailx
と呼ぶことができます。 /bin/
ディレクトリ。標準的な方法として、PHPスクリプトは/sbin
または/usr/sbin
。 sbinプログラムは通常、root用です。
また、phpには組み込みの メール関数 があります。
私のDebianシステム( "本物の" sendmailではなくEximを持っていますが、互換性のためにsendmailバイナリを持っています)では、スクリプトからメールを送信したいときは、次のようなことを行います。
cat <<EOF | sendmail -t
To: [email protected]
Subject: Testing
From: [email protected]
This is a test message
EOF
空白行が重要であることに注意してください。
echo -e "This is my body\nSecond line" 2>&1 | sed '1!b;s/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t
echo =メールの本文。
sed stuff =メールヘッダーを適用し、本文とヘッダーの間に重要な二重線を適用します。
sendmail -t = sendmailを介して直接パイプします。