如果您是注册用户,可以通过API来验证邮件地址的有效性。使用它非常简单,下面是API V1.0 开发文档::
https://www.emailcamel.com/api/single/validate/?usr=your_username&pwd=your_password&email=email@tocheck.com
PHP Example:
$username = 'your_username'; $password = 'your_password'; $email = 'email to be cheked'; $api_url = 'https://www.emailcamel.com/api/single/validate/?'; //构造请求URL $url = $api_url . 'usr=' . $username . '&pwd=' . $password . '&email=' . $email; //返回结果。返回的结果为json数据,需要json_decode $result = json_decode(remote_get_contents($url),TRUE); /** * $result = array( 'authentication_status' =>'',//fail,success 'authentication_msg' =>'', // 'verify_status' => 'fail', //success or fail 'verify_result' => '', //valid,invalid,notverified,catch-all,dea,format_err 'verify_suggested_correction'=>array( 'has_available_validate_num'=>0, 'is_pass_grea_max_domain_num'=>0, 'send_freq_retry_time'=>2, 'grey_list_retry_time'=>120, ), 'verify_status_msg'=>'' ); * */ //处理逻辑 if($result['authentication_status']=='fail'){ //查看$result['authentication_msg']返回的信息,根据错误信息去修正用户名和密码 }else if($result['authentication_status']=='success'){ //认证成功 if($result['verify_status']=='fail'){//验证失败 //查看$result['verify_status_msg'],根据提示去解决些问题,比如是否是可用验证次数不足了等 //$result['verify_suggested_correction']['has_available_validate_num']==0 //表示可用的验证次数为0,需要账户充值 //$result['verify_suggested_correction']['is_pass_grea_max_domain_num']==1 //验证风控系统对单个域当天是否超过最大发送量,如果超过了,过了0点才可以再次发送该域。比如发送demo@gmail.com,会对gmail.com域做风控限制 if($result['verify_suggested_correction']['has_available_validate_num']>0){ //表示可以的验证次数足 if($result['verify_suggested_correction']['is_pass_grea_max_domain_num']==0) { //表示未超过风控系统对单个域当天是否超过最大发送量 //到这里验证失败的原因只能是发送频率的问题。 //根据这里$result['verify_suggested_correction']['send_freq_retry_time']提供的建议值,一般为2秒,2秒后重新发起验证该邮件地址即可 }else if($result['verify_suggested_correction']['is_pass_grea_max_domain_num']==1){ //表示该邮件地址所在的域超过风控系统对单个域当天最大的发送量,您可以0点后再发该邮件地址 } } }else if($result['verify_status']=='success'){ //验证成功 //可以在这里写您们的逻辑了 switch ($result['verify_result']){ case 'valid': //有效 //写您们的逻辑了 break; case 'invalid': //无效 //写您们的逻辑了 break; case 'notverified': //未验证出来 //写您们的逻辑了 //对于未验证出来的邮件地址,多半是灰名单引起的 //可以根据$result['verify_suggested_correction']建议的值,一般为120分钟即2小时后再重新发起验证 //您如果不需要验证,也可以不用验证 break; case 'catch-all': //catch-all //写您们的逻辑了 break; case 'dea': //dea //写您们的逻辑了 break; case 'format_err': //format_err 格式错误的邮件地址 //写您们的逻辑了 break; } } } // Get remote file contents, preferring faster cURL if available function remote_get_contents($url){ if (function_exists('curl_get_contents') AND function_exists('curl_init')) { return curl_get_contents($url); }else { // A litte slower, but (usually) gets the job done return file_get_contents($url); } } // function curl_get_contents($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return $output; }
返回结果$result,详解:
参数名 | 描述 | 值 |
---|---|---|
authentication_status | 认证状态 | 成功为:success,失败为:fail |
authentication_msg | 认证错误信息 | 返回:出错信息 |
verify_status | 验证是否成功 | 成功返回:success,失败返回:fail |
verify_status_msg | 验证失败的原因 | 返回验证失败的原因:用户名或者密码不正确,或者账户被禁用 |
verify_result | 验证状态结果 | 值分5个状态:valid,invalid,notverified,catch-all,dea,format_err |
verify_suggested_correction | 当验证失败或者验证状态结果为notverified的时候,一些建议值 | 提供4个建议,看下面 |
verify_suggested_correction['has_available_validate_num'] | 当验证失败时,可以查看可用的验证次数是否不足 | 当为0时表示可用的验证次数不足,>0时表示可用 |
verify_suggested_correction['is_pass_grea_max_domain_num'] | 当验证失败时,验证风控系统对单个域当天是否超过最大发送量,如果超过了,过了0点才可以再次发送该域。比如发送demo@gmail.com,会对gmail.com域做风控限制 | 0:未超过,1:超过 |
verify_suggested_correction['send_freq_retry_time'] | 当验证失败时,验证风控系统对发送频率的限制,对于验证失败的,2秒后再重新发 | 建议值2秒 |
verify_suggested_correction['grey_list_retry_time'] | 灰名单导致验证状态结构为:notverified | 对于notverified,建议120分钟即2小时后重试,重试1~3次,如果还是显示'notverified',则不需要再重试了 |
如果您有任何问题可以联系我们。