PHP中有没有办法检查任何电子邮件是否有效?

3

有没有办法通过PHP检查指定的电子邮件地址是否处于活动状态(即是否有任何人正在使用和打开它),或者不是(即被阻止或没有人使用/打开它,它是无效的)?
提前致谢。


你是在谈论你自己托管的电子邮件服务器还是类似于谷歌邮件这样的东西? - Lukas Knuth
简短回答是不行的,因为电子邮件非常瞬时,很难确定电子邮件是否存在。 - aknosis
@Lukas Knuth,我在谈论像Google、Yahoo或Hotmail等外部服务器。 - swdeveloper
3个回答

3
有没有办法(通过PHP)检查任何给定的电子邮件地址是否活动(即它当前是否被任何人使用和打开)或不活动(即被屏蔽或没有人使用/打开它)?
没有。唯一确定的方法是发送电子邮件到该地址,不会收到退回消息,并且收到某种回复(例如答案、用户在电子邮件中点击唯一链接、打开带有唯一URL的图像[尽管这是不推荐的,并且被许多电子邮件客户端阻止]或已读回执)。然而,这些方法都不是百分之百可靠的,因此您无法100%确定。

2

我认为您正在询问电子邮件用户输入的是否有效!如果是这种情况,那么您应该使用nslookup来帮助Unix操作系统执行。以下是一个小函数:(我正在检查域名是否正确)

function myCheckDNSRR($email)
{
      list($userName, $hostName) = split("@", $email); 
$recType = '';
if(!empty($hostName)) {
   if( $recType == '' ) $recType = "MX";

   exec("nslookup -type=$recType $hostName", $result);
   // check each line to find the one that starts with the host
   // name. If it exists then the function succeeded.

   foreach ($result as $line) {
     if(eregi("^$hostName",$line)) {
       return true;
     }
   }
   // otherwise there was no mail handler for the domain
   return false;
}
return false;

}


PHP有自己的函数checkdnsrr ;) - NikiC

0

你可以使用外部服务的API,但必须使用API。

有一些电子邮件验证API可用,data8就是其中之一。http://www.data-8.co.uk/integr8/services/email_validation.aspx

这里是一个示例。

function IsValid($email, $level)
{
  $params = array(
    "username" => "your-username",
    "password" => "your-password",
    "email" => $email,
    "level" => $level,
    "options" => $options
  );
  $client = new SoapClient("http://webservices.data-8.co.uk/EmailValidation.asmx?WSDL");
  $result = $client->IsValid($params);
  if ($result->IsValidResult->Status->Success == 0)
  {
    echo "Error: " . $result->IsValidResult->Status->ErrorMessage;
  }
  else
  {
    // TODO: Process method results here.
    // Results can be extracted from the following fields:
    // $result->IsValidResult->Result
    //   Contains a status code indicating if the email address could be validated.
  }
}

1
嗯,有点像,但这只检查电子邮件地址的域名是否活动和有效,以及该服务器上电子邮件地址的一般存在。它并不能告诉您该域上的特定电子邮件地址是否正在使用,用户是否可以访问等信息。 - Pekka
它验证了所述的电子邮件,但正如您所说,这永远不是100%确定的方法,“有效;根据所选的验证级别,电子邮件地址似乎是有效的。这并不能绝对保证发送到此地址的电子邮件将被传递和阅读。” - Eric Herlitz
是的,我的任务是检查用户是否有访问权限? - swdeveloper
这个 Web Service API 是免费的还是付费的? - swdeveloper
我发布的这个是付费的,但应该还有几个免费的。我选择这个是因为它有清晰的示例。 - Eric Herlitz
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接