PHP 如何验证一个邮箱有效是否真实有效?

2015-06-17 14:07:13 +08:00
 chinassl
是这样的,我们的程序提供了用户输入邮箱给用户发送邮件功能,好多用户邮箱乱写,写些根本不存在的邮箱,导致占用系统资源,还有有很多系统退信,能否有PHP程序在用户提交邮箱信息后进行验证,这个邮箱真实有效则发送邮件,否则跳过邮件发送?有没有办法做到呢?
6951 次点击
所在节点    PHP
29 条回复
lianyue
2015-06-17 14:11:34 +08:00
b821025551b
2015-06-17 14:11:58 +08:00
不能完美解决。
1、改为用邮箱注册,并验证邮箱;
2、如果有系统退信,对这个邮箱的相应用户做一些操作。
chinassl
2015-06-17 14:13:35 +08:00
@b821025551b 哦,由于系统没有强制用户注册后使用,看来真的没啥好办法!
tabris17
2015-06-17 14:16:27 +08:00
光检查MX记录无法确认邮箱是真实有效的
SMTP协议有个VRFY命令用来验证用户是否存在,不过很多SMTP服务器都把这个命令禁用了
davidyin
2015-06-17 15:14:07 +08:00
强制新用户验证一次邮箱。
旧用户的email地址导出,专门导入到邮件列表程序,验证。
Andy1999
2015-06-17 15:52:36 +08:00
filter_var
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid emailaddress
}

checkdnsrr
if (!checkdnsrr($domain, ‘MX’)) {
// domain is not valid
}
b821025551b
2015-06-17 16:18:12 +08:00
@Andy1999 MX只能检测输的那个域名是否存在,也是不能解决问题。
chinassl
2015-06-17 16:25:14 +08:00
@davidyin 这个也不太现实,由于用户不是固定用户,基本全是新用户!
111111111111
2015-06-17 16:34:36 +08:00
a. 检查MX 记录存在
b. 测试MX服务器SMTP 正常访问
c. SMTP协议 给用户发一封邮件 捕捉返回值

以上操作可以让用户界面的js 做,也可以找第三方服务商做
davidyin
2015-06-17 16:35:07 +08:00
@chinassl 还是改程序吧,只限验证过email地址的用户才能激活账号。
fangjinmin
2015-06-17 16:45:27 +08:00
没有完美的用程序直接验证邮箱存不存在的方法。
发认证码让用户认证是最好的解决办法。
chinassl
2015-06-17 16:47:15 +08:00
@111111111111 你可以写这个程序吗?还有这样是否会除了给用户发送我们发送的邮件,还会多一个验证邮件呢?
chinassl
2015-06-17 16:48:18 +08:00
@fangjinmin 好的!
chinassl
2015-06-17 16:48:38 +08:00
@davidyin 好的!
huage
2015-06-17 16:53:08 +08:00
1.只准使用某些后缀的邮箱,像如163、126等等;2.你参考一下这些邮箱允许用户的地址规则,然后做一个判断;3.注册时发邮件,确认验证。
learnshare
2015-06-17 17:01:52 +08:00
让用户点击邮箱中收到的链接,通过这个唯一的链接来确认邮箱有效。嗯,跟 PHP 没关系
s2555
2015-06-17 17:27:57 +08:00
模拟注册这些邮箱,已经注册的肯定不能注册成功,那就说明是存在的
lilydjwg
2015-06-17 19:24:38 +08:00
@s2555 这个难度是最高、问题也是最大的……

@huage 不建议这样做,因为总会有你忘记和没有及时更新的邮箱后缀。

Disqus 也是不验证的。它拿邮件来通知用户后续评论。你的用户为什么需要输入邮箱呢?为什么会有很多用户乱填呢?DIsqus 的情况,我能想到的唯一可能就是恶意攻击,可以根据访问者特征出验证码。
chuangbo
2015-06-17 19:26:13 +08:00
楼主是销售吗?如果不是技术背景并且确定你的技术水平比你们技术强,就不要在外面帮技术问问题,然后回去跟技术说找到了个技术方案看可不可行。这代表了你对同事的不信任。
chinassl
2015-06-17 19:37:59 +08:00
@lilydjwg 是这样的,我们提供了一种免费的服务,需要生成用户所需的文件,有一点专业性质,好多用户不懂,总是忘记下载文件,所以我们启用了生成完毕自动发送附件给用户邮箱,然而有好多用户可能出于测试的目的随便填写下信息,随便填写不存在的邮箱,所以出现了上述问题!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/199247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX