Ticket #557 (closed 改善提案: 修正済)

Opened 11 years ago

Last modified 10 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 11 years ago by shutta

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

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

comment:2 Changed 11 years ago by nanasess

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

comment:3 Changed 11 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 follow-up: ↓ 5 Changed 11 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

comment:5 in reply to: ↑ 4 ; follow-up: ↓ 6 Changed 11 years ago by shutta

上記スレッドでの話をふまえて、RFCに準拠するかどうかを運用者が選択できるように変更しました。 r18579, r18580 にコミットしました。

comment:6 in reply to: ↑ 5 Changed 11 years ago by shutta

さらに、 data/class/pages/entry/LC_Page_Entry_EmailMobile.php
data/class/pages/magazine/LC_Page_Magazine_Confirm.php
にて、メールアドレスの\EMAIL_CHECKが漏れていたので修正。

コミュニティ版: r18581
正式版: r18582
にてコミットしています。

comment:7 Changed 11 years ago by kajiwara

  • Milestone changed from EC-CUBE2.x.x to EC-CUBE2.5.0

shutta様 本件、ご対応ありがとうございます。

こちら、マイルストーンを一旦2.5.0に移動させたいと思います。

また、r18582 は別途チケットを発行して管理したいと思います。
#751 にて発行しました。こちらは2.4.4で対応予定です。)

comment:8 Changed 10 years ago by nanasess

  • Status changed from new to closed
  • Resolution set to 修正済

version-2_5-dev ブランチで対応済みになりますので close します

Note: See TracTickets for help on using tickets.