

＜目的＞  
新規会員登録のメールアドレス入力時に、入力間違えや不正登録を阻止するため

＜やりたいこと＞  
ユーザーが入力したドメインが存在しているかチェックする機能を実装したい  
※可能であればクライアントサイドで、リアルタイムに存在チェックをしたい

＜使用言語＞  
Java、Javascript

＜調べたこと、参照したもの＞  
▼PHPでのメールアドレス判定について  
[PHPで文字列がメールアドレスか判定するには？](https://ja.stackoverflow.com/questions/106/php%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%81%8C%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%8B%E5%88%A4%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF/5068#5068)

▼JavaでのMXレコードを用いたメールサーバー判定  
<http://www.rgagnon.com/javadetails/java-0452.html>

＜質問＞  
クライアントサイドでドメインチェックをする方法がありましたらご教授いただけますでしょうか？  
（初心者で実現性など加味できていないかと思います、、）  
バッチ処理などでメールドメイン名を蓄えておいて、それと入力メールドメインを照らしあわせるなど、妥協案でも構いませんのでご助言を頂ければ助かります！


CC BY-SA 3.0
2016-05-30T02:09:30.643
25275
2016-11-08T03:41:12.540
2017-04-13T12:52:38.920
-1
15694
question
javascript java sendmail
クライアントサイドでメールドメインの存在チェックをする良い方法は？


「ドメインが存在しているか」の定義を示されていないので、私はでたらめなドメインでないことを確認したい意図と解釈して、whoisを照会することとしました。jsonpで<https://www.whoisxmlapi.com/>のwhois照会サービスを利用します。[参考](https://stackoverflow.com/questions/8435678/whois-
with-javascript)

[code]

    var baseURL = 'https://www.whoisxmlapi.com/whoisserver/WhoisService?';
    
    var checkDomain = function (domain, callback) {
      var callback = callback || function () {},
          callbackName = '__checkDomain_jsonp_callback_' + Date.now();
      window[callbackName] = function (data) {
        callback(null, data.WhoisRecord);
      };
      var jsonpElement = document.createElement('script');
      jsonpElement.src = baseURL + 'outputFormat=json&domainName='
        + encodeURIComponent(domain) + '&callback=' + callbackName;
      jsonpElement.onerror = function (err) {
       callback(err);
      };
      document.body.appendChild(jsonpElement);
    };
    
    // example
    checkDomain('example.com', function (err, data) {
      console.log(err, data);
      if (data.dataError) {
       // たぶんこのプロパティがあるとwhoisが見当たらない→利用不可
      }
    });
    checkDomain('example-not-exists-not-available.com', function (err, data) {
      console.log(err, data);
      if (data.dataError) {
       // たぶんこのプロパティがあるとwhoisが見当たらない→利用不可
      }
    });
[/code]

ここまで書いて、コメントを見て気付きましたが、DNSのMXレコードをチェックしたほうが確実かもしれませんね。そちらもhttpリクエストで利用できるサービスがあれば、同様にしてできると思いますし、コメントにあるように自前でhttpリクエストを受け付けるサーバーサイドのプログラムを用意してもいいかもしれません。


CC BY-SA 3.0
2016-05-30T13:19:47.763
25310
2016-05-30T13:19:47.763
2017-05-23T12:38:56.467
-1
25275
answer


> クライアントサイドでドメインチェックをする方法がありましたらご教授いただけますでしょうか？

メールアドレスのドメインの存在をチェックするには DNS
に問い合わせるのが良いと思いますが、DNSクエリはクライアントサイドでは出来ないと思います。サーバーサイドで機能を実装してクライアントサイドのJSから呼び出すことを考えたほうが良いと思います。

また、そもそも論として ドメインの存在をチェックしても、メールアドレスの存在確認にはなりません。突き詰めると
送信してみないことには判断付かない事が多いですので、間違ったメールアドレスを入力した場合は
会員登録することが出来ないようにするなどの対策を検討した方が賢明かも知れません。


CC BY-SA 3.0
2016-05-30T14:02:48.943
25314
2016-05-30T14:02:48.943
5008
25275
answer