- ベストアンサー
PHPメール送信条件について
- ネットで公開されているサーバー監視PHPスクリプトを使って、障害が発生した場合にメールを送信する方法について教えてください。
- 具体的には、pingチェックとwebアクセスチェックがNGの場合にメールを送信したいです。
- アドレス情報や送信元のアドレスなども設定してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ありがとうございます。失礼しました。。。 pingのngの部分で一致してしまっていますね。。 if(strstr($result, "ng")) { を if(strstr($result, " ng")) { とすればngの時だけメールが飛ぶはずです。 #ngの前に半角スペースを追加。
その他の回答 (3)
- heburusu
- ベストアンサー率85% (140/164)
ありがとうございます。 度々となり申し訳ありません。 >if(strstr($result, "ng") { ですが、 if(strstr($result, "ng")) { が正しいです。#) を追加。
補足
いえ、とんでもありません。 ご指摘いただいた通り修正し、NG判定がでる設定とOK判定のでる設定を試しましたら、ブラウザでの読み込みまたは処理中と思われる動作のあと、メールが送信されてきました。。。が、従来通り「OK」の場合も送信されてきました。。。 NG判定の場合のみ送信できれば、、、
- heburusu
- ベストアンサー率85% (140/164)
早速ありがとうございます。 最後の行の } が入ってない?ため、正しく実行されていないかもしれません。 if(strstr($result, "ng") { //結果をメール送信 $mail_header = "From: $MAIL_FROM"; mail($MAIL_TO, 'check result', $result, $mail_header); } ★←これも必要
補足
こちらこそ、早々のご回答有難う御座います。 ご指摘いただきました件、試してみましたが、やはり先程ご連絡したように読み込みまたは処理中と思われる動作が一切なくメール送信されませんでした。。。 <記述内容> if(strstr($result, "ng") { //結果を全てメール送信 $mail_header = "From: $MAIL_FROM"; mail($MAIL_TO, 'check result', $result, $mail_header); } ★←これを追記 ?>
- heburusu
- ベストアンサー率85% (140/164)
$resultの中に結果が文字列として入っているので、 $resultにngが含まれていれば送信のような感じにしてはどうでしょうか? if(strstr($result, "ng") { //結果をメール送信 $mail_header = "From: $MAIL_FROM"; mail($MAIL_TO, 'check result', $result, $mail_header); }
補足
ご回答有難う御座います。 早速、監視対象を架空のIP、架空のドメインへ変更し、ご回答いただいた「 if(strstr($result, "ng") {」を追記した試してみたのですが、、、メールは送信されませんでした。 PHPを実行した際の挙動なのですが、ソース変更前のPHPを実行するとブラウザのタイトル部が数秒間クルクル回り、その後メールが送信されていたのに対し、ソース変更後は、前途のような読み込みまたは処理中と思われる動作が一切なくメール送信されなくなりました。 【送信NGだった記述】 if(strstr($result, "ng") { //⇒ここへ追記しました。 //結果を全てメール送信 $mail_header = "From: $MAIL_FROM"; mail($MAIL_TO, 'check result', $result, $mail_header); ?>
お礼
有難う御座いました! ping NG、webアクセス OK ping OK、webアクセス NG ping NG、webアクセス NG でメールが送信され、 ping OK、webアクセス OK ではメールは送信されなくなりました。 本当に有難う御座いました。