- ベストアンサー
条件マッチしたときの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); ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
簡単に直すのでしたら、最後の3行を下記の様にしてみては。 if( $message != "" ){ $message = wordwrap($message,70); $headers .= 'From: umiwarn<the@aaa.com>' . "\r\n"; mail($to, $subject, $message, $headers); }
その他の回答 (2)
- punipunipuniko
- ベストアンサー率20% (2/10)
ttyp03さんの回答通りにすればいいと思いますよ
補足
#1を含め、アドバイスありがとうございます。 無事解決いたしました。
- punipunipuniko
- ベストアンサー率20% (2/10)
>>mail($to, $subject, $message, $headers); これを呼び出すときに 「ディレクトリが存在してたか」って情報を持ってないと 駄目だと思いますが?? ソースのままだと ディレクトリがあろうが、なかろうがメールを送信してますよ。
補足
アドバイス感謝いたします。 っということは if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/aaaa/",$file)) { if(preg_match("/bbbb/",$file)) { mail($to, $subject, $message, $headers); } } } } みたいにするということでしょうか? 申し送れましたが私はphpについて初心者なので、実際にスクリプトの例をいただけると助かります。
お礼
無事解決いたしました。ありがとうございます。