【发布时间】:2018-07-04 11:28:15
【问题描述】:
我不知道如何为不接受 gmail、yahoo 等免费电子邮件帐户的电子邮件字段制定验证规则。 谁能指导我这个话题。提前致谢
【问题讨论】:
-
到目前为止你尝试了什么?
-
我讨厌当我尝试使用我的邮件并因为它来自免费帐户而被拒绝时。
-
不接受 gmail?您往往会失去 70% 的客户。
我不知道如何为不接受 gmail、yahoo 等免费电子邮件帐户的电子邮件字段制定验证规则。 谁能指导我这个话题。提前致谢
【问题讨论】:
将电子邮件提供商列表放入配置文件中,例如放入config/email.php:
'banned_email_providers' => '@gmail\.com|@yahoo\.com'
然后使用此列表使用regex 验证规则:
'email' => ['regex:/^((?!' . config('email.banned_email_providers') . ').)*$/'],
【讨论】:
@gmail.com|@yahoo.com 这样的列表。
webhopers.in 添加到禁止电子邮件列表中?或者您在此字符串中添加了另一个验证规则,例如 email?
您可以存储邮件站点的名称并根据其值检查电子邮件
$free = [
'google.com',
'yahoo.com'
];
$mailSite = substr($email, strpos($email, '@') + 1);
if (in_array($mailSite, $free) {
exit('free email');
}
【讨论】:
将此条目添加到 \config\mail.php
'banned_servers' => ['yahoo.com', 'gmail.com']
然后
$rules = [
'email' => array('regex:/@(?!' . implode('|', array_map(function ($item){return str_replace('.', '\.', $item);}, config('mail.banned_servers'))) . ')/')
];
$messages = ['email.regex' => 'Email accounts from '. implode(', ', config('mail.banned_servers')) . ' are not allowed'];
$this->validate(Request::instance(), $rules, $messages);
【讨论】: