サンプル・プログラム
プログラムの解説:DNS問い合わせ
そこで、PEAR::Net_DNS を使うことにする。

このPEARパッケージは癖があり、今回は Net_DNS 1.0.1 を利用することにする。
0025: /**
0026: * getmxrrの代替関数
0027: * @param string $hostname ホスト名
0028: * @param string $mxhosts 見つかったMXレコードのリスト
0029: * @return stringエラーメッセージ/'':成功
0030: */
0031: function my_getmxrr($hostname, &$mxhosts) {
0032: $resolver = new Net_DNS_Resolver();
0033: $resolver->nameservers = array(
0034: '8.8.8.8' ,'129.250.35.250' //Google DNS
0035: );
0036: $resolver->retry = 2; //リトライ秒数
0037: $resolver->retrans = 3; //リトライ回数
0038: if ($resolver->query('google.com') == FALSE) {
0039: return 'ネームサーバにアクセスできません';
0040: }
0041:
0042: //MXレコード検査
0043: $response = $resolver->query($hostname, 'MX');
0044: if ($response) {
0045: foreach ($response->answer as $rr) {
0046: $mxhosts[] = $rr;
0047: }
0048: if (count($response->additional)) {
0049: foreach ($response->additional as $rr) {
0050: $mxhosts[] = $rr;
0051: }
0052: }
0053: $res = '';
0054: } else {
0055: $res = 'MXレコードがありません';
0056: }
0057: unset($resolver);
0058:
0059: return $res;
0060: }
というのは、Linuxではデフォルト・リゾルバを参照するのだが、Windowsではうまく動かないことがあるようなので、強制的にGoogle DNSを参照するように定義している。そして、 "google.com" が解釈できなければ、ネットに接続していないという判断を加えた。
コンパイル


コマンドラインから "bamcompile checkmailwin.bcp" を実行する。コンパイルが完了すると、"checkmailwin.exe" が生成されている。
"checkmailwin.exe" は、DLL不要で、単独で動作するEXEプログラムである。
参考サイト
- PHPで正しいメールアドレスかどうか調べる:ぱふぅ家のホームページ
- PEAR::Net_DNS