[PHP-users 14119] Re: mb_send_mail()の質問です

Kazunori Miura php-users@php.gr.jp
2003年 3月 20日 (木) 04:36:52 JST


三浦と申します。

すべてのメールサーバーに有効というわけではありませんが、
SMTPのrcptを使って、アドレスが有効かどうかチェックする
方法はあります。下のは、実際に使用するにはもう少し直す箇所が
ありますが、とりあえず動くと思います。

適当に直してお試しください。

function CheckEmail($email) { 
$return = false; 
$SERVER_NAME = "hoge.hoge";
$address = "hoge@hoge";

$domain=split("@",$email);

if (checkdnsrr ($domain[1], "MX")) { 
	if (getmxrr ($domain[1], $mxhosts, $weight)) { 
		$query_host = gethostbynamel($mxhosts[0]);
		for ($i = 0; $i < count ($query_host); $i++) { 
		$fp = fsockopen ($query_host[$i], 25); 
		if (!$fp) {continue;}
					$output_0 = ""; 
socket_set_blocking ($fp, true); 
socket_set_timeout($fp, 10);
$output_0 = fgets ($fp, 250); 
fputs ($fp, "HELO ".$SERVER_NAME."\n"); 
$output_1 = fgets ($fp, 200); 
fputs ($fp, "MAIL FROM: " . $address . "\n"); 
$output_2 = fgets ($fp, 200); 
fputs ($fp, "RCPT TO: ".$email."\n"); 
$output_3 = fgets ($fp, 200); 

if (ereg ("^250", $output_3)) { 
	$return = true; 
		 } else { 
	$return = false; 
		}

fputs ($fp, "QUIT\n"); 

fclose($fp); 

	if ($return == true) { 
	 break; 
			} 
		
		 } 
	 } 
 } 
  
   return $return; 
 } //end function



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