PHP识别邮箱类型

实现思路

  • 通过PHP系统函数 dns_get_record 获取邮箱的DNS解析记录
  • 通过正则匹配识别邮箱的类型

1、dns_get_record

/*
  php5内置系统函数
  $hostname:必填参数,指定要查找其DNS资源记录的主机名。
  $type:选填参数,指定要搜索的DNS记录的类型  可选值:
    DNS_A
    DNS_CNAME
    DNS_HINFO
    DNS_CAA
    DNS_MX
    DNS_NS
    DNS_PTR
    DNS_SOA
    DNS_TXT
    DNS_AAAA
    DNS_SRV
    DNS_NAPTR
    DNS_A6
    DNS_ALL
    DNS_ANY(默认)
  对应DNS解析类型,这里我们主要用到 DNS_MX 邮件交换器
*/
dns_get_record(
    string $hostname,
    int $type = DNS_ANY,
    array &$authoritative_name_servers = null,
    array &$additional_records = null,
    bool $raw = false
): array|false

2、代码实现

<?php

class DnsAnalysis
{
    protected function analysis(string $email, int $type = DNS_MX)
    {
        $emailRegex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/';
        if (empty($email) || !preg_match($emailRegex, $email)) return '邮箱格式错误';
        list($prefix, $domain) = explode('@', $email);
        $result = dns_get_record($domain, $type);
        if (empty($result)) return '未检测到域名解析';

        $first = current($result);
        if (preg_match('/^mx(\d*).qq.com$/', $first['target'])) {
            return 'QQ邮箱';
        } else if (preg_match('/^mxbiz(\d*).qq.com$/', $first['target'])) {
            return '腾讯企业邮箱';
        } else if (preg_match('/^163mx(\d*).mxmail.netease.com$/', $first['target'])) {
            return '163邮箱';
        } else if (preg_match('/^mx(\d*).qiye.163.com$/', $first['target'])) {
            return '163企业邮箱';
        } else if (preg_match('/^126mx(\d*).mxmail.netease.com$/', $first['target'])) {
            return '126邮箱';
        } else if (preg_match('/^mx(\d*).mail.aliyun.com$/', $first['target'])) {
            return '阿里云邮箱';
        }
        return '未知类型';
    }

    public function index()
    {
        $email = '123@163.com';
        echo $this->analysis($email);
    }
}

3、常用邮箱DNS记录数据

163邮箱:
    163mx00.mxmail.netease.com
    163mx01.mxmail.netease.com
    163mx02.mxmail.netease.com
    163mx03.mxmail.netease.com
163企业邮箱:
    mx.qiye.163.com
    mx2.qiye.163.com
126邮箱:
    126mx00.mxmail.netease.com
    126mx01.mxmail.netease.com
    126mx02.mxmail.netease.com
    126mx03.mxmail.netease.com
QQ邮箱:
    mx1.qq.com
    mx2.qq.com
    mx3.qq.com
腾讯企业邮箱:
    mxbiz1.qq.com
    mxbiz2.qq.com
阿里云邮箱:
    mx2.mail.aliyun.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值