• ベストアンサー

存在しないメールアドレスかどうかのチェック

PHPのNet_SMTPにて、メール送信するプログラムを作成しています。 http://pear.php.net/manual/ja/package.networking.net-smtp.php を参照して作成しているのですが、 存在しないメールアドレスかどうかのチェックは可能でしょうか? ユーザーが誤ったメールアドレスを設定していた場合、 システムはそのメールアドレスにメール送信するのですが、 当然誤ったメールアドレスなので、ユーザーには届きません。 このような事を回避するために、 システムがメールを送信する際に、 この世に存在するアドレスかどうかチェックする術はあるのでしょうか? 返却されたメールを解析するしか無いのでしょうか… ※.アドレス内に「@」が無いなどのチェックではなく、   存在するアドレスかどうかのチェックが可能かどうかになります。

  • PHP
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>返却されたメールを解析するしか無いのでしょうか… まず、ドメインの存在自体は、getmxrr()などでチェック可能です。 ただ、「この関数をメールアドレスの確認の目的で使用すべきでは ありません」と注記されているとおりドメインの有効性はこちらを 利用すべきではないかもしれません。 ドメインはあっているが、メールアドレスが間違っている場合については 最近はスパム対策のため「返却さえしない」ケースの方が多いと思います。 なので何をチェックしても無駄です。 基本的には放置。必要ならユーザー側から問い合わせがくるでしょう。 どうしてもという場合は、やはり空メールを送らせて、最初から有効だと いう前提の登録システムを構築すべきです

その他の回答 (1)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

メールアドレスの誤った記述以外は、実際にメールサーバーに問い合わせるしかないですよ その方法の中で一番簡単で確実なのが確認メールを相手に送ることです (メールアドレス登録時の問題もありそうな気がしますが、触れないことにしておきます)

関連するQ&A

  • メールアドレスが存在するか確認したい。

    PHP+MySQLで会員制のサイトを作成しています。 不正投稿を抑制するため、 ”ID登録時のメールアドレスの存在を定期的にチェックし、無くなっていればメールアドレスの再登録を促し、再登録されなければIDの削除をする。” といったシステムにしたいと思っています。 どのようにすれば、実現できるのでしょうか? 見当外れな質問かも知れませんが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 存在しないアドレスで送信?

    フリーメールを送るときに付く広告を消してみようともくろみ、 Outlook Expressのアカウント設定で、SMTPだけフリーメールのサーバーではなく、 プロバイダーのSMTPサーバーを指定してみました。 それで、自分の別アドレス宛に送ると、広告なしのメールが届いたので、実験成功と喜んでいたのですが、 ふと気になって、存在しないメールアドレスのアカウントを作成してSMTPを同じように指定すると、 やはり送信できてしまいました。 すると存在しないアドレスでメールをどんどん送れるということになってしまいますよね。 何となく不安になってきました。 このあたりの仕組みがよく分からないので、どなたか分かる方お教えいただけませんか? (おそらく私はメールサーバーの仕組みを根本的に理解していないのでしょうね…) 説明が分かりにくいかもしれませんが、お願いします。

  • メールアドレス存在チェック

    人に教えてもらったメールアドレスを、実際にメールを送らなくても存在チェックするのは、通常はどうすればよいのでしょうか。 下記のようなサイトはみつけましたが、もっと公的なサイトかツールがないものかと思っています。 また、@以下のドメイン存在チェックも方法を探しています。 (すいません、怪しいことに使うわけではありませんので誤解無きようおねがいします。)

  • PEARのメールが突然使えなくなりました

    Warning: include_once(Net/SMTP.php): failed to open stream: No such file or directory in ○○○/PEAR/Mail/smtp.php on line 348 Warning: include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/local/php/5.5/lib/php') in ○○○/PEAR/Mail/smtp.php on line 348 Fatal error: Class 'Net_SMTP' not found in ○○○/PEAR/Mail/smtp.php on line 349 メールフォームを作って使っていたのですが、昨日の夕方頃から上記のようなエラーメッセージが出て利用できなくなりました。 どうやらNetディレクトリ内のSMTP.phpというファイルが見つからないという内容のように見えますが、ちゃんと該当のディレクトリもファイルも存在しています。 ただ、include_onceで指定しているパスが"Net/SMTP.php"となっているので、これだとMailディレクトリのsmtp.phpで呼び出している以上、Mailディレクトリの中にあるNetディレクトリのSMTP.phpでないといけないような気がするんですが、NetディレクトリはMailディレクトリが置かれているディレクトリにあります。 これが原因? でも、今までこの状態で使ってきたはずだし、昨日の昼頃まで普通に使えていました。 それがファイルを書き換えるどころか、サーバーにアクセスしてすらいないのに、なぜ突然このような状態になってしまったのかがわかりません。 単純にNetディレクトリをMailディレクトリの中に移し替えれば良いのでしょうか? ただ、PEARはインストールツールみたいなものでインストールしたので、手動で勝手にディレクトリの位置を変えて良いのか分からず、怖くてできません。 最初からPEARをインストールし直した方が良いのでしょうか? 何かお分かりになる方がいらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • メールアドレスが正しいかどうかチェックする方法は?

    フォームから受け取ったメールアドレスが、正しいかどうかをチェックする方法について教えてください。 フォームから受け取ったアドレスが****@vodafone.ne.jpと誤記入されていたため、このアドレス宛にsendmailで送信しようとしたらエラー(Internal Server Error)になりました。(正しくは****@x.vodafone.ne.jp) 「存在しないメールアドレス」の場合は、送信後にuser unknownかhost unknownとしてUndeliveredになりますが、上記の場合、送信そのものができなかったようです。 aaaaaaaa@bbb.******.ne.jp、 aaaaaaaa@******.ne.jp で試してみたところ、同様にエラーになり、 aaaaaaaa@***.ne.jp では送信できました(当然Undeliveredになりましたが)。 「sendmailで送信するときにエラーになるパターン」というようなものがあるのでしょうか? エラーになる前に、メールアドレスが、正しくないという警告を出したいのですが、可能でしょうか? 現在は、メールアドレスに「半角英数と@以外が含まれている」か「@が含まれていない」と警告するようにしています。

    • ベストアンサー
    • CGI
  • PEAR Mailの不具合について(チカッパサーバー)

    チカッパ レンタルサーバーにてPEAR::Mailがうまくいきません。 ローカルでは、正常に動いていました。 下記の様なエラーが表示されます。 Warning: getsmtpobject(Net/SMTP.php): failed to open stream: No such file or directory in /home/sites/chicappa.jp/users/chicappa.jp-*****/web/lib/PEAR/Mail/smtp.php on line 311 Warning: getsmtpobject(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/home/sites/chicappa.jp/users/chicappa.jp-*****/web/lib/PEAR/') in /home/sites/chicappa.jp/users/chicappa.jp-*****/web/lib/PEAR/Mail/smtp.php on line 311 Fatal error: Cannot instantiate non-existent class: net_smtp in /home/sites/chicappa.jp/users/chicappa.jp-*****/web/lib/PEAR/Mail/smtp.php on line 312 上記解決策のアドバイスを頂けたら助かります。 よろしく、お願い致します。

    • 締切済み
    • PHP
  • HPでのメールアドレスチェックについて

    HPで、お問い合わせなどに本人のメールアドレスを入れてもらい、送信する前にそのアドレスが本当に存在するアドレスかどうかのチェックを行えるプログラムみたいなものがあると聞きました。 どのようなものかまた、どうすれば使用できるのか教えてください!

  • メールアドレス有効チェック

    SMTP?メールについて質問があります。 毎年お正月に迷惑かもしれませんが、あけおめメールを一斉送信して アドレスが有効かどうか確認しています。 今年はキャリアを変えてしまったので一斉送信が5件までになっていて 全員に送るのが面倒です。 相手にメール本体は届かないけど無効なときだけメールが返ってくる。パケットなど作れないでしょうか? むしろそんな便利なサービスってありませんよね? よろしくお願いしますm(_ _)m

  • 特定のIPアドレスでPHPを使ったメール送信ができません

    PEARのMailを使ってメールを送信するソースを作成しました。 IPアドレスを自動取得した場合はきちんとメール送信ができています。 しかし、外部からの利用を可能にするためのIPアドレスに変更すると送信処理に時間がかかり、送信処理を中断してしまいます。 この特定のIPアドレスがある同一LAN内にはたくさんのPCがつながっています。 もしかしてこれが原因なのでしょうか? 動作環境:Windows+Apache2.0.52+PHP4.4.2

    • 締切済み
    • PHP
  • メールアドレスの存在のチェックで簡単なツールがあり

    メールアドレスの存在のチェックで簡単なツールがあります。下記のソースで行う事が出来ます。 <form action="http://mobile-tool.net/mail-checker/" method="post"> メールアドレス<BR> <input type="text" name="mail_name"><BR> <select name="mail_domein"> <option value="1">@docomo.ne.jp</option> <option value="2">@ezweb.ne.jp</option> <option value="3">@softbank.ne.jp</option> <option value="13">@i.softbank.jp</option> <option value="14">@disney.ne.jp</option> <option value="4">@t.vodafone.ne.jp</option> <option value="5">@c.vodafone.ne.jp</option> <option value="6">@d.vodafone.ne.jp</option> <option value="7">@h.vodafone.ne.jp</option> <option value="8">@r.vodafone.ne.jp</option> <option value="9">@k.vodafone.ne.jp</option> <option value="10">@n.vodafone.ne.jp</option> <option value="11">@s.vodafone.ne.jp</option> <option value="12">@q.vodafone.ne.jp</option> </select><BR> <input type="submit" value="確認"> </form> キャリアのsmtpサーバにtelnetでつないで、VRFYコマンドでユーザーの存在確認をして、rcpt to:のところでOKが出れば「存在する」、OKがでなければ「存在しない」と判定して居るそうなのですが、これを1000件単位くらいずつまとめてチェック出来る様にしたいのですがこのソースをいじって出来るようにして頂けませんか?

    • ベストアンサー
    • HTML

専門家に質問してみよう