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 相关文章推荐
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php实现TCP端口检测的方法
Apr 01 PHP
PHP程序员的技术成长规划
Mar 25 PHP
PHP精确计算功能示例
Nov 29 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
php unlink()函数使用教程
Jul 12 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
php 数据结构之链表队列
2017/10/17 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
微信小程序自定义组件
2017/08/16 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
JavaScript如何操作css
2020/10/24 Javascript
一道python走迷宫算法题
2018/01/22 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
为什么需要版本控制
2016/10/28 面试题
remote接口和home接口主要作用
2013/05/15 面试题
财务务虚会发言材料
2014/10/20 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
煤矿安全保证书
2015/02/27 职场文书
实验心得体会范文
2016/01/25 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android