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者的疑难问答(1)
Oct 09 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
php购物车实现方法
Jan 03 PHP
PHP简单选择排序算法实例
Jan 26 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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
留言板翻页的实现详解
2006/10/09 PHP
php下Memcached入门实例解析
2015/01/05 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
详解Python中import机制
2020/09/11 Python
python中实现词云图的示例
2020/12/19 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
大学生新学期计划书
2014/04/28 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
兵马俑的导游词
2015/02/02 职场文书
光荣之路观后感
2015/06/12 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
销售口号霸气押韵
2015/12/24 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS