Ticket #557 (new 改善提案) — at Version 4

Opened 12 years ago

Last modified 11 years ago

メールアドレス形式のチェック関数の正規表現の改良

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:1 Changed 12 years ago by shutta

  • Type changed from バグ指摘 to 改善提案

分類を選択し忘れていたので、分類を「改善提案」に変更しました。

comment:2 Changed 12 years ago by nanasess

携帯キャリアの多くは, RFC に違反したメールアドレスを許容しており, 登録も可能なようですが問題ありませんでしょうか?

comment:3 Changed 12 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の場合と、携帯の場合でチェックを切り替えるという方法も取れます。

参考: 各社のメールアドレス設定(使用できるメールアドレス)

 DoCoMo

 au

 Softbank

 emobile

comment:4 Changed 12 years ago by nanasess

  • Description modified (diff)

下記のような報告もありますが, 実際はどうなんでしょうか??

 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=5456&forum=9&post_id=26090#forumpost26090

Note: See TracTickets for help on using tickets.