热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP怎么实现imap收取一封有验证码的邮件,自动注册和登录得到Token

想实现一键注册成功,并且登录http://adm.fxtcvip.com进去取到Token码为最终目的,这里是提交参数去注册会员但是注册必须要邮箱收到验证码,填写到最后,才可以提

想实现一键注册成功,并且登录 http://adm.fxtcvip.com进去取到Token码为最终目的,

这里是提交参数去注册会员但是注册必须要邮箱收到验证码,填写到最后,才可以提交注册成功,以下网址最后填写邮箱打开就可以发送验证码,邮箱收到邮件取到验证才可以注册成功
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
http://adm.fxtcvip.com/send_email_register_verify_code?email=$取email
发邮件验证码

http://adm.fxtcvip.com/reg?user_name=$随机7位小写用户名&password=$随机3小写4个数字&phOne=$随机11位&qq=$qq号码10位&email=$取email&remark=http://www.paypal.com, http://www.amazon.com,http://www.facebook.com&ver_code=$邮件验证码
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

我有很多这个邮箱都可以imap收信
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
inutaccay137@mail.com----390bXzrnAG
imatlonsou445@mail.com----45xLmw2zZR
imap服务器SSL : imap.mail.com    端口:993
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
邮件内容如下:就是想取验证码注册
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
发件人: 
Rola-IP   
收件人: 
时间: 
2021年3月20日 (周六) 20:22
大小: 
11 KB
[ROLA-IP] Your Regisiter Code is: 360669. Expire after 5 minutes
--------------------------------------
ROLA-IP
Address: San Francisco.US
Phone: (+1) 213 - 476 - 0037
Tax: (+1) 213 - 476 - 0030
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

不知道用php能实现吗??????
 

代码已经切换为你邮局的,可以正常读取邮件注册了,如果读取不到验证码,要适当延长sleep的等待时间,现在是15秒后再读取邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107



set_time_limit(100);

//date_default_timezone_set('PRC');



function matchMailHead($str){

  $headList = array();

  $headArr = array('subject','date');

  foreach ($headArr as $key){

    if(preg_match('/^'.$key.':(.*?)[\n\r]$/ism', $str,$m)){

      $match = trim($m[1]);

      $headList[$key] = $key=='date'?strtotime($match): mb_decode_mimeheader($match);

    }

  }

  return $headList;

}

function getValidCode($mailserver,$email,$password){

  if(strpos($mailserver,":993")!==false){//ssl

    $host= "{".$mailserver."/imap/ssl/novalidate-cert}INBOX";

  }

  else{

    $host= "{".$mailserver."}INBOX";

    //$host= "{".$mailserver."/notls}";

  }

  //echo $host;

  $mbox = imap_open($host, "$email", "$password") or die("can't connect: " . imap_last_error());

  $sorted = imap_sort($mbox, SORTDATE, 1);//日期降序排列



  $total=count($sorted);

  $num=5;//读取最新的前5封邮件找验证码,如果你这个邮箱收发量大,这里改下数字,如改为10,读取前10封

  if($num>$total)$num=$total;

  for ($i&#061;0;$i<$num;$i&#043;&#043;){    

    $no&#061;$sorted[$i];

    $headers &#061; imap_fetchheader($mbox, $no); //获取信件标头

    $headArr &#061; matchMailHead($headers); //匹配信件标头

    //echo json_encode($headArr)."
";

    if($headArr["subject"]&#061;&#061;&#039;Welcome to Rola-IP platform&#039;){//验证码邮件标题匹配读取验证码

        $body&#061; base64_decode(imap_fetchbody($mbox, $no, 1));

        preg_match("/Your Regisiter Code is:\s*(\d&#043;)/i",$body,$m);

        return $m[1];

   }

  }

  imap_close($mbox);

  return &#039;&#039;;

}

function get_user_name($num){

  $un&#061;"";

  for($i&#061;0;$i<$num;$i&#043;&#043;)$un.&#061;chr(rand(1,26)&#043;96);

  return $un;

}

function get_password($chrnum,$num){

  $pwd&#061;"";

  for($i&#061;0;$i<$chrnum;$i&#043;&#043;)$pwd.&#061;chr(rand(1,26)&#043;96);

  for($i&#061;0;$i<$num;$i&#043;&#043;)$pwd.&#061;rand(0,9);

  return $pwd;

}

function get_num($num,$isQQ){

  $v&#061;$isQQ?rand(1,9):1;

  $num-&#061;1;

  for($i&#061;0;$i<$num;$i&#043;&#043;)$v.&#061;rand(0,9);

  return $v;

}



function sendCode($email){

  $content&#061;file_get_contents("http://adm.fxtcvip.com/send_email_register_verify_code?email&#061;$email");

  $o&#061;json_decode($content);

  if($o->code!&#061;&#061;0)die("发送验证码失败&#061;&#061;》".$o->msg);

}







/////////////////////////////////////////////////////////////////////////





$email&#061;$_GET["email"];

$password&#061;$_GET["password"];

$mailserver&#061;isset($_GET["mailserver"])?$_GET["mailserver"]:"imap.mail.com:143";///////////传递了服务器地址使用传递的





sendCode($email);//发送验证码

sleep(15);//暂停15秒等待对方服务器发邮件

$ver_code&#061;getValidCode($mailserver,$email,$password);



if($ver_code&#061;&#061;"")die("获取验证码失败&#xff0c;请适当调整sleep时间给对方服务器发送邮件~~");







$user_name&#061;get_user_name(7);

$pwd&#061;get_password(3,4);

$phone&#061;get_num(11,false);

$qq&#061;get_num(10,true);

$url&#061;"http://adm.fxtcvip.com/reg?user_name&#061;$user_name&password&#061;$pwd&phone&#061;$phone&qq&#061;$qq&email&#061;$email&remark&#061;http://www.paypal.com,http://www.amazon.com&ver_code&#061;$ver_code";



$content&#061;file_get_contents($url);//注册

$o&#061;json_decode($content);



if($o->code!&#061;&#061;0)die("注册失败&#061;&#061;&#061;>".$o->msg.$url);



 //注册成功登陆系统获取token

$url&#061;"http://adm.fxtcvip.com/login?user_name&#061;$user_name&password&#061;$pwd";

$content&#061;file_get_contents($url);//登陆系统获取token

$o&#061;json_decode($content);

if($o->code!&#061;&#061;0)die("登陆系统失败&#061;&#061;&#061;>".$o->msg);



echo "Token&#xff1a;".$o->data->token."
user_name&#xff1a;$user_name
password&#xff1a;$pwd";



?>



推荐阅读
author-avatar
气质沫儿巛1314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有