有没有办法在PHP中检查是否有任何电子邮件是活动的?

时间:2011-09-16 06:43:22

标签: php email

有没有办法检查(通过PHP)是否有任何给定的电子邮件地址是活动的(意味着它当前是否正在使用和由任何人打开)(意味着它被阻止或没有人使用/打开它,它是无效)?
问候&提前谢谢。

3 个答案:

答案 0 :(得分:3)

  

有没有办法检查(通过PHP)是否有任何给定的电子邮件地址是活动的(意味着它当前是否正在使用和由任何人打开)(意味着它被阻止或没有人使用/打开它,它是无效)?

没有。

唯一可以确定的方法是向地址发送电子邮件,而不是收到退回邮件,并获得某种回复(如答案或用户点击电子邮件中的唯一链接) ,或者打开一个唯一URL的图像[虽然这是令人不悦的,并且被许多电子邮件客户端阻止],或者是已读回执)。但是,这些方法都不是万无一失的,所以你永远无法100%确定。

答案 1 :(得分:2)

我认为您在询问电子邮件用户输入的内容是否有效!如果是这种情况,那么你应该在exec的帮助下使用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;

}

答案 2 :(得分:0)

您必须使用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.
  }
}