【PHP】スクリプト上からメールコマンドを実行する際の注意。

めも。

まずは意図した通りにメールが送信されず処理がストップする例。

exec('mail -s "title" -r test@example.com test@example.com');

上記コマンドのみだと、この行に到達した時点でメール本文の入力待ち状態に移行してしまうため処理が止まってしまう。
これを回避するためには下記のようにして標準出力をメール本文に渡してやる必要がある。

exec('echo "" | mail -s "title" -r test@example.com test@example.com');

前半で空文字をechoしてやることで本文空のメールとして送信することが出来る。
また任意の文字列をメール本文に乗っけたい場合は、下記の通り好きな文字をechoしてやればよい。

exec('echo "テストメールです。" | mail -s "title" -r test@example.com test@example.com');