Ticket #557 (closed 改善提案: 修正済)
メールアドレス形式のチェック関数の正規表現の改良
Reported by: | shutta | Owned by: | somebody |
---|---|---|---|
Priority: | 低 | Milestone: | EC-CUBE2.5.0alpha |
Component: | フロント | Version: | 2.4.1 |
Keywords: | Cc: | ||
修正済み: |
Description (last modified by nanasess) (diff)
http://blog.livedoor.jp/dankogai/archives/51189905.html
http://www.geminium.com/chiba_blog/2009/03/22/163/
を参考に、EMAIL_CHECK関数の正規表現を改良したものを r18352 にコミットしました。
(参考とういか、後者のコードそのものですが。。。)
携帯向けに..や.@を許容した正規表現も上記参考サイトにありましたが、RFCに違反したメールアドレスにはメールが送信できないので、あえて弾くようにしています。
Change History
comment:2 Changed 14 years ago by nanasess
携帯キャリアの多くは, RFC に違反したメールアドレスを許容しており, 登録も可能なようですが問題ありませんでしょうか?
comment:3 Changed 14 years ago by shutta
確かに過去は、RFCに違反したメールアドレスが許容されておりましたが、
現在では、全てのキャリアでRFCに準拠したメールアドレスを使用するようになっています。
但し、最近準拠するようになったキャリア(DoCoMo? 2009/4頃, au 2009/9頃)は、
それ以前に設定したメールアドレスにはRFCに違反を許容しており、
現状でもそのまま使用可能になっております。
しかし、EC-CUBE側でRFCに違反したメールアドレスを登録できても、 ユーザに対してメールが届けられないので、それはそれで問題があるのかなぁ、 と思いまして、この変更をコミットしてみました。
RFC違反を挙用するのであれば、先の参考URLの
$dot_atom_loose = "$atext+(?:[.]|$atext)*"; $local_part_loose = "(?:$dot_atom_loose|$quoted_string)"; $addr_spec_loose = "${local_part_loose}[@]$domain";
の部分まで取り込めば、連続ドット(..)や、@の前の.(.@)も通るようにできますので、 PCの場合と、携帯の場合でチェックを切り替えるという方法も取れます。
参考: 各社のメールアドレス設定(使用できるメールアドレス)
comment:4 follow-up: ↓ 5 Changed 14 years ago by nanasess
- Description modified (diff)
下記のような報告もありますが, 実際はどうなんでしょうか??
分類を選択し忘れていたので、分類を「改善提案」に変更しました。