php通过smtp邮件验证登陆的方法


Posted in PHP onMay 11, 2016

本文实例讲述了php通过smtp邮件验证登陆的方法。分享给大家供大家参考,具体如下:

内网的系统为了统一账号,都采用用邮件账号登陆的方式,所以有了以下程序

/**
* 通过邮件 验证登陆
* 这里要明白的是用户名是 带域名的:aaa@163.com
*/
function valideEmailLogin($user, $pass, $smtp_server= 'smtp.163.com', $port=25)
{
$handle = fsockopen($smtp_server, $port);
if(!$handle)
return false;
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 220) { //链接服务器失败
fclose($handle);
return false;
}
fwrite($handle, 'HELO mystore'."\r\n"); //表明身份,这里的mystore是随便写的
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 250) { //服务器HELO失败
fclose($handle);
return false;
}
fwrite($handle, 'AUTH LOGIN'."\r\n");
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 334) { //请求验证登陆失败
fclose($handle);
return false;
}
fwrite($handle,base64_encode($user)."\r\n");
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 334) { //验证用户名失败
fclose($handle);
return false;
}
fputs($handle,base64_encode($pass)."\r\n"); 
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
fclose($handle);
if($status[0] != 235) { //验证密码失败
return false;
}else{
return true;
}
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
PHP学习之PHP表达式
Oct 09 PHP
wordpress之wp-settings.php
Aug 17 PHP
一个很不错的PHP翻页类
Jun 01 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
php遍历目录方法小结
Mar 10 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
Smarty变量用法详解
May 11 #PHP
基于PHP实现商品成交时发送短信功能
May 11 #PHP
Smarty环境配置与使用入门教程
May 11 #PHP
理解php依赖注入和控制反转
May 11 #PHP
php结合web uploader插件实现分片上传文件
May 10 #PHP
配置Nginx+PHP的正确思路与过程
May 10 #PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 #PHP
You might like
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python中字符串与编码示例代码
2019/05/20 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
护士自我评价
2014/02/01 职场文书
人资专员岗位职责
2014/04/04 职场文书
入职担保书怎么写
2014/05/12 职场文书
写给老师的感谢信
2015/01/20 职场文书
员工自我评价范文
2015/03/11 职场文书
推荐信范文大全
2015/03/27 职场文书
教师岗位职责范本
2015/04/02 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
vue实现列表垂直无缝滚动
2022/04/08 Vue.js