名前¶
Email::Valid - インターネット電子メールアドレスの正当性のチェック
概要¶
use Email::Valid;
print (Email::Valid->address('maurice@hevanet.com') ? 'yes' : 'no');
説明¶
This module determines whether an email address is well-formed, and optionally, whether a mail host exists for the domain.
このモジュールは、電子メールアドレスが適格であるか否かを判断します。 さらに、そのドメインのメールホストが存在するか否かも判断します。
Please note that there is no way to determine whether an address is deliverable without attempting delivery (for details, see perlfaq 9).
実際に配送することなしに電子メールアドレスが配送可能か否かを 判断することはできないということに留意してください。 (詳細については、perlfaq 9 を見てください。)
PREREQUISITES¶
This module requires perl 5.004 or later and the Mail::Address module. Either the Net::DNS module or the nslookup utility is required for DNS checks. The Net::Domain::TLD module is required to check the validity of top level domains.
このモジュールは perl 5.004 以降と Mail::Address を要求します。 また、DNS チェックのために Net::DNS モジュールか nslookup ユーティリティのどちらかを要求します。Net::Domain::TLD モジュールは トップレベルドメインの妥当性チェックのために必要です。
メソッド¶
Every method which accepts an <ADDRESS> parameter may
be passed either a string or an instance of the Mail::Address
class. All errors raise an exception.
<ADDRESS> パラメータを受け取るための全てのメソッドには、
文字列か Mail::Address クラスのインスタンスのどちらかを
渡すことができます。全てのエラーには例外が発生します。
- new ( [PARAMS] )
-
This method is used to construct an Email::Valid object. It accepts an optional list of named parameters to control the behavior of the object at instantiation.
このメソッドは、Email::Valid オブジェクトを生成します。 パラメータの名前のオプションのリストを渡すことによって オブジェクトの振る舞いを変更することができます。
The following named parameters are allowed. See the individual methods below of details.
許可されているパラメータの名前は次のものです。 個々の詳細は下にある説明を見てください。
-mxcheck -tldcheck -fudge -fqdn -local_rules
- mx ( <ADDRESS>|<DOMAIN> )
-
This method accepts an email address or domain name and determines whether a DNS record (A or MX) exists for it.
このメソッドは、電子メールアドレスかドメイン名を渡すことによって、 (A か MX の)DNS レコードが存在するか否かを判断します。
The method returns true if a record is found and undef if not.
このメソッドはレコードが見つかったならば true を、そうでない ならば undef を返します。
Either the Net::DNS module or the nslookup utility is required for DNS checks. Using Net::DNS is the preferred method since error handling is improved. If Net::DNS is available, you can modify the behavior of the resolver (e.g. change the default tcp_timeout value) by manipulating the global Net::DNS::Resolver instance stored in $Email::Valid::Resolver.
DNS チェックには、Net::DNS モジュールか nslookup ユーティリティの どちらかが必要です。Net::DNS モジュールを用いた方が、良いエラー ハンドリングを得ることができます。もし、Net::DNS モジュールが 利用できるならば、あなたは $Email::Valid::Resolver に格納されている グローバルな Net::DNS::Resolver インスタンスの操作によって (例えば tcp_timeout の初期値を変更するなどの)レゾルバの振る舞いを 変更することができます。
- tld ( <ADDRESS> )
-
This method determines whether the domain part of an address is in a recognized top-level domain.
このメソッドは、アドレスのドメインパートが承認されているトップレベルドメインであるのかを判定します。
- rfc822 ( <ADDRESS> )
-
This method determines whether an address conforms to the RFC822 specification (except for nested comments). It returns true if it conforms and undef if not.
このメソッドは、アドレスが RFC822 の仕様に従っているか否かを 判断します。但し、ネストしたコメントには対応していません。 仕様に従っているならば true を、そうでないならば undef を返します。
- fudge ( <TRUE>|<FALSE> )
-
Specifies whether calls to address() should attempt to correct common addressing errors. Currently, this results in the removal of spaces in AOL addresses, and the conversion of commas to periods in Compuserve addresses. The default is false.
address() が呼ばれた際に、一般的なアドレスのエラーがあれば 修正しようと試みます。今のところは、AOL のアドレスの場合は、 空白文字を削除し、Compuserve アドレスの場合は、コンマをピリオドに 置換します。初期値は false です。
- fqdn ( <TRUE>|<FALSE> )
-
Species whether addresses passed to address() must contain a fully qualified domain name (FQDN). The default is true.
address() にアドレスが渡されたときに正規の完全なドメイン名(FQDN)を 持つのかをチェックします。初期値は true です。
- local_rules ( <TRUE>|<FALSE> )
-
Specifies whether addresses passed to address() should be tested for domain specific restrictions. Currently, this is limited to certain AOL restrictions that I'm aware of. The default is false.
address() にアドレスが渡されたときに特定の制約事項を持つドメインの アドレスをチェックします。今のところは AOL の制約事項の検出に 限定されています。初期値は false です。
- mxcheck ( <TRUE>|<FALSE> )
-
Specifies whether addresses passed to address() should be checked for a valid DNS entry. The default is false.
address() にアドレスが渡されたときに正しい DNS エントリーで あるのかをチェックします。初期値は false です。
- tldcheck ( <TRUE>|<FALSE> )
-
Specifies whether addresses passed to address() should be checked for a valid top level domains. The default is false.
address() にアドレスが渡されたときに正しいトップレベルドメインで あるのかをチェックします。初期値は false です。
- address ( <ADDRESS> )
-
This is the primary method which determines whether an email address is valid. It's behavior is modified by the values of mxcheck(), tldcheck(), local_rules(), fqdn(), and fudge(). If the address passes all checks, the (possibly modified) address is returned as a string. Otherwise, the undefined value is returned. In a list context, the method also returns an instance of the Mail::Address class representing the email address.
電子メールアドレスが正当である(valid)か否かを判断するための 主要な(primary)メソッドです。mxcheck() や tldcheck()、local_rules()、 fqdn()、fudge() の値によって振る舞いを変更できます。もし、 アドレスが全てのチェックで問題がなかったならば、 (場合によっては修正された)アドレスを文字列として返します。 そうでなければ、未定義値を返します。リストコンテキストならば、 電子メールアドレスを表現するクラスである Mail::Address の インスタンスも返します。
- details ()
-
If the last call to address() returned undef, you can call this method to determine why it failed. Possible values are:
最後に呼ばれた address() が undef を返したときに、 どのチェック項目で失敗したのかを返します。 次の値が用意されています。
rfc822 local_rules fqdn mxcheck tldcheck
If the class is not instantiated, you can get the same information from the global $Email::Valid::Details.
もし、クラスのインスタンスを生成していないならば、グローバル変数 $Email::Valid::Details から同様の情報を得ることができます。
例¶
Let's see if the address 'maurice@hevanet.com' conforms to the RFC822 specification:
それでは、RFC822 の仕様に従っている 'maurice@hevanet.com' という アドレスでの例を見てみましょう。
print (Email::Valid->address('maurice@hevanet.com') ? 'yes' : 'no');
Additionally, let's make sure there's a mail host for it:
更に、メールホストを確認してみましょう。
print (Email::Valid->address( -address => 'maurice@hevanet.com',
-mxcheck => 1 ) ? 'yes' : 'no');
Let's see an example of how the address may be modified:
アドレスを修正する場合の例を見てみましょう。
$addr = Email::Valid->address('Alfred Neuman <Neuman @ foo.bar>');
print "$addr\n"; # prints Neuman@foo.bar
Now let's add the check for top level domains:
トップレベルドメインのチェックを追加してみましょう。
$addr = Email::Valid->address( -address => 'Neuman@foo.bar',
-tldcheck => 1 );
print "$addr\n"; # doesn't print anything
Need to determine why an address failed?
何故アドレスが正しくないのかの理由が必要な場合は次のようになります。
unless(Email::Valid->address('maurice@hevanet')) {
print "address failed $Email::Valid::Details check.\n";
}
If an error is encountered, an exception is raised. This is really only possible when performing DNS queries. Trap any exceptions by wrapping the call in an eval block:
エラーがあった場合に例外を発生させます。これは、DNS クエリを実行 したときだけ使えます。eval ブロックで括ることによって、 例外を捕捉します。
eval {
$addr = Email::Valid->address( -address => 'maurice@hevanet.com',
-mxcheck => 1 );
};
warn "an error was encountered: $@" if $@;
バグ¶
Email::Valid should work with Perl for Win32. In my experience, however, Net::DNS queries seem to take an extremely long time when a record cannot be found.
Email::Valid は Perl for Win32 で動作します。しかし、私の経験では、 Net::DNS クエリを使ったとしても、レコードを見つけることが できなかった際に極めて長い時間待たされるように思います。
作者¶
Copyright 1998-2003, Maurice Aubrey <maurice@hevanet.com>. All rights reserved.
This module is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
CREDITS¶
Significant portions of this module are based on the ckaddr program written by Tom Christiansen and the RFC822 address pattern developed by Jeffrey Friedl. Neither were involved in the construction of this module; all errors are mine.
このモジュールの大部分は、Tom Christiansen によって書かれた ckaddr プログラムと Jeffrey Friedl によって書かれた RFC822 アドレスの正規表現 をベースにしています。 どちらもこのモジュールの構築には関係ありません。 全ての誤りは私自身に責任があります。
Thanks very much to the following people for their suggestions and bug fixes:
下に挙げる人々の示唆やバグ修正に大変感謝しています。
Otis Gospodnetic <otis@DOMINIS.com>
Kim Ryan <kimaryan@ozemail.com.au>
Pete Ehlke <pde@listserv.music.sony.com>
Lupe Christoph
David Birnbaum
Achim
Elizabeth Mattijsen (liz@dijkmat.nl)
SEE ALSO¶
Mail::Address, Net::DNS, Net::Domain::TLD, perlfaq9
翻訳について¶
翻訳者:IWAI, Masaharu <iwaim.sub@gmail.com>
Perlドキュメント日本語訳 Project にて、 Perlモジュール、ドキュメントの翻訳を行っております。
http://sourceforge.jp/projects/perldocjp/
http://www.freeml.com/ctrl/html/MLInfoForm/perldocjp@freeml.com
http://perldoc.jp/