• ベストアンサー

条件マッチしたときのmail関数

ちょっと前に似た質問を行いましたが、本日になって希望どおりの動きをしないことに気づきましたので質問させていただきます。 スクリプトの流れとしては、 ====== ./ディレクトリのファイル名に"aaaa"と"bbbb"の両方の文字列が含まれるものが存在した場合、test@aaa.com宛にメールを送信する。 ====== です。 以下のスクリプトですと、上記の条件(ファイル名に"aaaa"と"bbbb"の両方の文字列が含まれるものが存在した場合)でないときもmessageが空のメールが送られてきてしまいます。どうか解決方法をご教授ください。 <?php $to = 'test@aaa.com' . ', '; $subject = 'macchisitafairugaarimasu'; $message=""; if ($dir = opendir("./")) { while (($file = readdir($dir)) !== FALSE) { if(strpos($file,"aaaa") !== FALSE && strpos($file,"bbbb") !== FALSE) { $message.="{$file} exists.\n"; } } closedir($dir); } $message = wordwrap($message,70); $headers .= 'From: umiwarn<the@aaa.com>' . "\r\n"; mail($to, $subject, $message, $headers); ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

簡単に直すのでしたら、最後の3行を下記の様にしてみては。 if( $message != "" ){ $message = wordwrap($message,70); $headers .= 'From: umiwarn<the@aaa.com>' . "\r\n"; mail($to, $subject, $message, $headers); }

wf3255
質問者

お礼

無事解決いたしました。ありがとうございます。

その他の回答 (2)

回答No.3

ttyp03さんの回答通りにすればいいと思いますよ

wf3255
質問者

補足

#1を含め、アドバイスありがとうございます。 無事解決いたしました。

回答No.1

>>mail($to, $subject, $message, $headers); これを呼び出すときに 「ディレクトリが存在してたか」って情報を持ってないと 駄目だと思いますが?? ソースのままだと ディレクトリがあろうが、なかろうがメールを送信してますよ。

wf3255
質問者

補足

アドバイス感謝いたします。 っということは if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/aaaa/",$file)) { if(preg_match("/bbbb/",$file)) { mail($to, $subject, $message, $headers); } } } } みたいにするということでしょうか? 申し送れましたが私はphpについて初心者なので、実際にスクリプトの例をいただけると助かります。

関連するQ&A

専門家に質問してみよう