Php 如何验证电子邮件是否有效

Php 如何验证电子邮件是否有效,php,email,bounce,Php,Email,Bounce,在发送前,我尝试了很多方法来跟踪am电子邮件是否有效。 我使用php邮件和swift邮件发送电子邮件。许多网站被告知参考mx记录。但它只返回域是否有效。不返回电子邮件。例如,如果我有一个域example.com,并且我只创建了mail@example.com,如果我试图将邮件发送到mailmailme@example.com还返回电子邮件是否有效。但是我需要mailmailme@example.com在发送此电子邮件之前无效 就像中的过程一样,尝试构建 $APIUrl = 'http://www

在发送前,我尝试了很多方法来跟踪am电子邮件是否有效。 我使用php邮件和swift邮件发送电子邮件。许多网站被告知参考mx记录。但它只返回域是否有效。不返回电子邮件。例如,如果我有一个域
example.com
,并且我只创建了
mail@example.com
,如果我试图将邮件发送到
mailmailme@example.com
还返回电子邮件是否有效。但是我需要
mailmailme@example.com
在发送此电子邮件之前无效

就像

中的过程一样,尝试构建

$APIUrl = 'http://www.email-validator.net/api/verify';
$Params = array('EmailAddress' => $Email,
                'APIKey' => '[your API key]');
$Request = @http_build_query($Params);
$ctxData = array(
     'method' => "POST",
     'header' => "Connection: close\r\n".
     "Content-Length: ".strlen($Request)."\r\n",
     'content'=> $Request);
$ctx = @stream_context_create(array('http' => $ctxData));

// send API request
$result = json_decode(@file_get_contents(
    $APIUrl, false, $ctx));

// check API result
if ($result && $result->{'status'} > 0) {
    switch ($result->{'status'}) {
        // valid addresses have a {200, 207, 215} result code
        case 200:
        case 207:
        case 215:
                echo "Address is valid.";
                break;
        case 114;
                // retry
                break;
        default:
                echo "Address is invalid.";
                echo $result->{'info'};
                echo $result->{'details'};
                break;
    }
} else {
    echo $result->{'info'};
}

在您的代码中

无法100%确定电子邮件是否有效

您可以尝试连接到邮件服务器,启动邮件会话并“要求”服务器接受给定地址的邮件

如果地址未列出,某些邮件服务器将返回错误,但其他服务器将接受任何地址,只要该地址在服务器范围内

对于您提到的站点,请尝试检查此地址,例如: 无效_address@microsoft.com


您将得到服务器接受此地址的回答,但这并不意味着它是有效的…

不幸的是,无法可靠地验证电子邮件地址是否有效,因为如果地址不存在,服务器通常不会发回错误。这是必要的,因为否则垃圾邮件发送者只需尝试电子邮件地址,就可以找出哪些是有效的,哪些是无效的。

除非您使用一些拥有无数电子邮件地址的全球服务,否则无法检查电子邮件地址是否存在。但它们只起到抓捕垃圾邮件机器人的作用,不会将电子邮件地址分发给第三方。我尝试了email-validator.net,结果是:OK-Catch All Active此域的邮件服务器接受该地址,但它也实现了一个Catch All策略。因此,如果不发送消息并等待回复,则无法确定具有此名称的邮件帐户是否确实存在。因此没有回调。你基本上是在问,在不付费的情况下,你怎么做这项付费服务呢?@WigglerJtag,付费服务如何验证启用了捕获所有功能的服务器的id?比如email-validator.net和所有其他服务器(有很多,它们的数据库中都不能有无数的电子邮件地址)。所以,必须有一种方法来验证电子邮件,即使是对所有服务器,你认为呢?