热门标签 | 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";



?>



推荐阅读
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
  • Apple iPad:过渡设备还是平板电脑?
    I’vebeenagonizingoverwhethertopostaniPadarticle.Applecertainlydon’tneedmorepublicityandthe ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 标题: ... [详细]
  • 本文总结了解决python文件读写乱码问题的方法。其中包括错误的打开方式和正确的打开方式,并提供了相应的代码示例。建议在进行写入操作后先将文件关闭,然后再打开,最后再读取文件。若文件编码是utf-8,则需要在读取文件时添加decode('utf-8')。这样操作可以避免在打开记事本时出现乱码问题。 ... [详细]
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社区 版权所有