[PHP-users 22660]mb_send_mailについてDNSサーバーの接続に失敗する

Drum2 Ants in ants_drum @ hotmail.com
2004年 7月 21日 (水) 10:46:03 JST


mb_send_mailについてDNSサーバーの接続に失敗する
初めまして、現在独学でPHPを勉強中です。
しゅうといいます。宜しくお願いします。
 
今、「10日で覚えるPHP入門教室」(著者株式会社オフィスエム、発行所翔泳社)
を読みながら実際にサンプルプログラムで勉強をしているのですが、
 
メール送信フォームを使うプログラムがありまして、
そのサンプルが上手く動作しなくて困っています。
以下にそのまま記述します。
 
サンプルプログラム
<?php
require_once("common.php");
$g_FORM[ "VALUE_NAME" ] = array();
$g_FORM[ "VALUE_NAME" ][ "CHK_INPUT" ] = true;
$g_FORM[ "VALUE_POST" ] = array();
$g_FORM[ "VALUE_POST" ][ "CHK_NUMBER" ] = true;
$g_FORM[ "VALUE_ADDRESS" ] = array();
$g_FORM[ "VALUE_MAIL" ] = array();
$g_FORM[ "VALUE_MAIL" ][ "CHK_INPUT" ] = true;
$g_FORM[ "VALUE_FAVORITE" ] = array();
ReadParse();
if ( $_REQUEST[ "SUBMIT" ] != "" ) {
  if ( CheckFormError() == false ) {
    $mail_to = $_REQUEST[ "VALUE_MAIL" ];
    $subject = "ありがとうございました。";
    $body    = "PHPメールフォームのご利用ありがとうございました。\n" . 
               "以下は、送信された内容のコピーです。\n\n";
    $body   .= "名前     :" . $g_FORM[ "VALUE_NAME" ][ "VALUE" ] . 
"\n";
    $body   .= "郵便番号   :" . $g_FORM[ "VALUE_POST" ][ "VALUE" ] . 
"\n";
    $body   .= "住所     :" . $g_FORM[ "VALUE_ADDRESS" ][ "VALUE" ] . 
"\n";
    $body   .= "メールアドレス:" . $g_FORM[ "VALUE_MAIL" ][ "VALUE" ] . 
"\n";
    $body   .= "趣味     :" . $g_FORM[ "VALUE_FAVORITE" ][ "VALUE" ] 
. "\n";
    mb_send_mail( $mail_to, $subject, $body );
    
    header( "Location: http://" . $_SERVER[ "HTTP_HOST" ]
          . dirname( $_SERVER[ "PHP_SELF" ] ) . "/complete.php?VALUE_NAME="
          . urlencode( $_REQUEST[ "VALUE_NAME" ] ) );
    exit();
  }
} else {
  ClearFormValue();
}
?>
<HTML>
<HEAD><TITLE>05-02</TITLE></HEAD>
<BODY>
<H1 ALIGN="CENTER">メールフォーム</H1>
<FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>"
 METHOD="POST">
下記項目に情報を入力後、「送信」ボタンをクリックしてください。<BR>
<FONT COLOR="RED">*</FONT>のついた項目は入力必須です。
<TABLE WIDTH="100%" BORDER="0">
<TR>
  <TD BGCOLOR="#999999">お名前</TD>
  <TD BGCOLOR="#CCCCCC">
    <INPUT TYPE="TEXT" NAME="VALUE_NAME" SIZE="20" VALUE="<?php
      HESC( $g_FORM[ "VALUE_NAME" ][ "VALUE" ] );
    ?>"><FONT COLOR="RED">*</FONT>
    <?php
      if ( $g_FORM[ "VALUE_NAME" ][ "ERROR" ] == true ) {
      ?><FONT COLOR="RED">■ <?php
        HESC( $g_FORM[ "VALUE_NAME" ][ "MESSAGE" ] );
      ?> ■</FONT><?php
      }
    ?>
    </TD>
</TR>
<TR>
  <TD BGCOLOR="#999999">郵便番号</TD>
  <TD BGCOLOR="#CCCCCC">
    <INPUT TYPE="TEXT" NAME="VALUE_POST" SIZE="20" VALUE="<?php
      HESC( $g_FORM[ "VALUE_POST" ][ "VALUE" ] );
    ?>">
    <?php
      if ( $g_FORM[ "VALUE_POST" ][ "ERROR" ] == true ) {
      ?><FONT COLOR="RED">■ <?php
        HESC( $g_FORM[ "VALUE_POST" ][ "MESSAGE" ] );
      ?> ■</FONT><?php
      }
    ?>
    </TD>
</TR>
<TR>
  <TD BGCOLOR="#999999">住所</TD>
  <TD BGCOLOR="#CCCCCC">
    <INPUT TYPE="TEXT" NAME="VALUE_ADDRESS" SIZE="50" VALUE="<?php
      HESC( $g_FORM[ "VALUE_ADDRESS" ][ "VALUE" ] );
    ?>">
    <?php
      if ( $g_FORM[ "VALUE_ADDRESS" ][ "ERROR" ] == true ) {
      ?><FONT COLOR="RED">■ <?php
        HESC( $g_FORM[ "VALUE_ADDRESS" ][ "MESSAGE" ] );
      ?> ■</FONT><?php
      }
    ?>
    </TD>
</TR>
<TR>
  <TD BGCOLOR="#999999">メールアドレス</TD>
  <TD BGCOLOR="#CCCCCC">
    <INPUT TYPE="TEXT" NAME="VALUE_MAIL" SIZE="40" VALUE="<?php
      HESC( $g_FORM[ "VALUE_MAIL" ][ "VALUE" ] );
    ?>"><FONT COLOR="RED">*</FONT>
    <?php
      if ( $g_FORM[ "VALUE_MAIL" ][ "ERROR" ] == true ) {
      ?><FONT COLOR="RED">■ <?php
        HESC( $g_FORM[ "VALUE_MAIL" ][ "MESSAGE" ] );
      ?> ■</FONT><?php
      }
    ?>
    </TD>
</TR>
<TR>
  <TD BGCOLOR="#999999">趣味</TD>
  <TD BGCOLOR="#CCCCCC">
    <INPUT TYPE="RADIO" NAME="VALUE_FAVORITE" VALUE="旅行"
    <?php
      echo( ( $g_FORM[ "VALUE_FAVORITE" ][ "VALUE" ] == "旅行" ) ?
            "checked" : "" );
    ?>>旅行
    <INPUT TYPE="RADIO" NAME="VALUE_FAVORITE" VALUE="音楽"
    <?php
      echo( ( $g_FORM[ "VALUE_FAVORITE" ][ "VALUE" ] == "音楽" ) ?
            "checked" : "" );
    ?>>音楽
    <INPUT TYPE="RADIO" NAME="VALUE_FAVORITE" VALUE="プログラミング"
    <?php
      echo( ( $g_FORM[ "VALUE_FAVORITE" ][ "VALUE" ] == "プログラミング" ) 
?
            "checked" : "" );
    ?>>プログラミング
    <?php
      if ( $g_FORM[ "VALUE_FAVORITE" ][ "ERROR" ] == true ) {
      ?><FONT COLOR="RED">■ <?php
        HESC( $g_FORM[ "VALUE_FAVORITE" ][ "MESSAGE" ] );
      ?> ■</FONT><?php
      }
    ?>
  </TD>
</TR>
<TR>
  <TD COLSPAN="2" ALIGN="CENTER">
    <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 送 信 ">
    <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE=" ク リ ア ">
  </TD>
</TR>
</TABLE>
</FORM></BODY></HTML>

common.phpで使用する関数
//  ReadParse
//    GET/POSTの値を取得します。
//    同時に、設定に基づいてエラーチェックを行います。
function ReadParse() {
  global $g_FORM;
  foreach ( $g_FORM as $key => $setting ) {
    $g_FORM[ $key ][ "VALUE" ] = $_REQUEST[ $key ];
    $g_FORM[ $key ][ "ERROR" ] = false;
    $g_FORM[ $key ][ "MESSAGE" ] = "";
 
    //  必須
    if ( $g_FORM[ $key ][ "CHK_INPUT" ] == true ) {
      if ( $g_FORM[ $key ][ "VALUE" ] == "" ) {
        $g_FORM[ $key ][ "ERROR" ] = true;
        $g_FORM[ $key ][ "MESSAGE" ] = "入力もれ";
        continue;
      }
    }
 
    //  数字のみ
    if ( $g_FORM[ $key ][ "CHK_NUMBER" ] == true ) {
      if ( ereg( "[^0-9]", $g_FORM[ $key ][ "VALUE" ] ) == true ) {
        $g_FORM[ $key ][ "ERROR" ] = true;
        $g_FORM[ $key ][ "MESSAGE" ] = "数字のみ";
        continue;
      }
    }
 
    //  アルファベットのみ
    if ( $g_FORM[ $key ][ "CHK_ALPHA" ] == true ) {
      if ( ereg( "[^a-zA-Z]", $g_FORM[ $key ][ "VALUE" ] ) == true ) {
        $g_FORM[ $key ][ "ERROR" ] = true;
        $g_FORM[ $key ][ "MESSAGE" ] = "アルファベットのみ";
        continue;
      }
    }
    
  }
}
 
//  CheckFormError
//    フォームでエラーがあったかどうかをチェックします。
function CheckFormError() {
  global $g_FORM;
  foreach ( $g_FORM as $key => $setting ) {
    if ( $g_FORM[ $key ][ "ERROR" ] == true ) {
      return true;
    }
  }
  return false;
}
 
//  ClearFormValue
//    GET/POSTで取得した値をクリアする。
function ClearFormValue() {
  global $g_FORM;
  foreach ( $g_FORM as $key => $setting ) {
    $g_FORM[ $key ][ "VALUE" ] = "";
    $g_FORM[ $key ][ "ERROR" ] = false;
    $g_FORM[ $key ][ "MESSAGE" ] = "";
  }
}

でこれをそのまま使って、送信を試してみたんです。
メールの送信には本に書いてある通り、「radish」というソフトを使っています。
DNSの設定も確認しました。(コマンドプロンプトで「nslookup」)
 
すると、DNSの接続に失敗しましたというエラーが出るんです。
色々と調べてみたのですが、
php.iniファイルの設定では
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

という状態になっています。
使っているOSはwinXPです。
Appachは2.0.50です。
phpは4.3.7です。
 
なんとなくですけど、ポートの問題なんじゃないか?
と思い、php.iniのポートの設定を変えてやってみると
今度はradish自体にメールが受信されない状態になってしまいます。
 
完全に行き詰ってしまって、居ます。
MLの過去ログをさらったのですが、(mb_send_mailで検索)
ちょっと見当たりませんでした。
 
どなたかご教授ください。どうぞ宜しくお願いします。

_________________________________________________________________
楽しい絵文字でココロ伝わるメッセンジャー http://messenger.msn.co.jp/ 



PHP-users メーリングリストの案内