如果您是注册用户,可以通过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',则不需要再重试了 |
如果您有任何问题可以联系我们。


