Thinkphp3.2版本使用163邮箱发(验证码)邮件
今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文。
------------------------------------------------------------------------------------------------------------------------------------------------------------
1、准备工作
(1)下载PHPMailer,插件,下载地址:链接:http://pan.baidu.com/s/1hskrDqs 密码:dcs9
(2)将下载好的文件加压,放在thinkphp扩展库内(个人存放路径:根目录\ThinkPHP\Library\Vendor\PHPMailer)
2、代码拼写
(1)在根目录\项目目录\Common\conf\config.php内,加入以下代码;
// 配置邮件发送服务器
'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称
'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
'MAIL_USERNAME' =>'99999999@163.com',//发件人的邮箱名
'MAIL_PASSWORD' =>'9999999',//163邮箱发件人授权密码
'MAIL_FROM' =>'9999999@163.com',//发件人邮箱地址
'MAIL_FROMNAME'=>'某某名',//发件人姓名
'MAIL_CHARSET' =>'utf-8',//设置邮件编码
'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件
注释:以下参数
发件人的邮箱名,
163邮箱发件人授权密码,
发件人邮箱地址,
发件人姓名
请自行更改(附163邮箱发件人授权密码获取方式)。
(2)在根目录\项目目录\Common\Common内,新建function.php文件,并加入以下代码;
<?php
/*
* 发送邮件
* @param $to string
* @param $title string
* @param $content string
* @return bool
* */
function sendMail($to, $title, $content) {
Vendor('PHPMailer.PHPMailerAutoload');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
$mail->Username = C('MAIL_USERNAME'); //发件人邮箱名
$mail->Password = C('MAIL_PASSWORD') ; //163邮箱发件人授权密码
$mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
$mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
$mail->AddAddress($to,"尊敬的客户");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
$mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
$mail->Subject =$title; //邮件主题
$mail->Body = $content; //邮件内容
$mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
return($mail->Send());
}
(3)本人使用的是ajax发送验证码,以下为html代码;
<form method="post" action="">
<input name="forget_name" id="forget_name" placeholder="账号" required="" type="text">
<hr class="hr15">
<input name="forget_email" placeholder="邮箱" id="forget_email" required="" type="text" style="width:70%">
<a href="#" onclick="send();">发送验证码</a>
<hr class="hr15">
<input name="code" placeholder="验证码" required="" type="text">
<hr class="hr15">
<input name="new_pass" placeholder="新密码" required="" type="text">
<hr class="hr15">
<input value="发送验证码" style="width:100%;" type="submit">
<hr class="hr20">
<a href="">登录</a>
</form>
<script>
function send(){
var name = $('#forget_name').val();
var email = $('#forget_email').val();
$.ajax({
type:"get",
url:"http://127.0.0.1/index.php/Edu/Login/send.html",
async:true,
contentType:"application/json",
dataType:"json",
data:{"forget_name":name,"forget_email":email},
success:function(data){
alert(data);
}
});
}
</script>
<script src="__PUBLIC__/Admin/style/jquery.min.js"></script>
(4)以下为php代码;
//发送邮件验证码
public function send(){
if(IS_AJAX){
//接收账号信息
$data['name'] = I('get.forget_name');
if(!$data['name']) $this->ajaxReturn("请填写登录账号",0);
//接收邮箱
$data['email'] = I('get.forget_email');
if(!$data['email']) $this->ajaxReturn("请填写邮箱账号",0);
//验证邮箱格式
$pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
if(preg_match( $pattern, $data['email'])){
//邮箱格式正确下,判断用户是否存在
$Manager = D('Manager');
$condition['display'] = 1;
$condition['name'] = $data['name'];
$condition['status'] > 1;
$ManagerInfo = $Manager->where($condition)->find();
if($ManagerInfo){
//核对用户账号与邮箱是否一致
if($ManagerInfo['email'] == $data['email']){
//设置参数
$title = "邮箱验证"; //邮件标题
$font = "此邮件为找回密码验证邮件,请勿回复,您的验证码为"; //邮件内容
$code = rand(1000,9999); //随机码
$content = $font.$code; //拼接
if(SendMail($data['email'],$title,$content)) {
//存验证码
$Condition['code'] = $code;
$Condition['updatetime'] = time();
$Cond['name'] = $data['name'];
$ManagerSave = $Manager->where($Cond)->save($Condition);
if($ManagerSave){
$this->ajaxReturn("发送成功",0);
}else{
$this->ajaxReturn("验证码保存失败",0);
}
}else{
$this->ajaxReturn("发送失败",0);
}
}else{
$this->ajaxReturn("请核对用户信息的正确性",0);
}
}else{
$this->ajaxReturn("请核对用户信息",0);
}
}else{
$this->ajaxReturn("请核对邮箱信息",0);
}
}else{
$this->ajaxReturn(0);
}
}
(5)QQ邮箱验证码接收情况;

Thinkphp3.2版本使用163邮箱发(验证码)邮件的更多相关文章
- mailx加163邮箱发邮件
mailx加163邮箱发邮件 参考:https://www.cnblogs.com/myvic/p/9579954.html 配置 $ yum install mailx -y $ vim /etc/ ...
- python webdriver 登录163邮箱发邮件加附件, 外加数据和程序分离,配置文件的方式
配置文件:UiObjectMapSendMap.ini用来存放配置信息 GetOptionSendMail.py 用来读取配信息 #encoding=utf-8from selenium.webdri ...
- 项目一:第八天 1、前台系统导入 实现客户注册 发验证码,邮件 springdata-redis存储数据 3、实现客户登陆
1 前台系统客户注册功能 页面:signup.html 1.1 验证手机号是否注册(邮箱同样) 1. 使用Jquery-validate插件进行相关校验,使用校验规则 <input type=& ...
- java实现邮箱发送信息--验证码的发送(163邮箱)
1.maven环境 <!-- 发送邮件 --> <dependency> <groupId>javax.mail</groupId> <artif ...
- Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...
- Thinkphp5的使用phpmailer实现发邮件功能(163邮箱)
Thinkphp5本身并没有实现发邮件的功能,至少据我所知. 本文利用网易邮箱作为发邮件的邮箱.作为发送邮件的前提是需要开启SMTP服务,打开网易邮件,点击设置按钮,如下图所示 勾选smtp服务 保存 ...
- java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...
- [转]Redmine 配置163邮箱
redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...
- python登录网易163邮箱,爬取邮件
from common import MyRequests,LoggerUntil,handle_exception myRequests.update_headers({ 'Accept':'tex ...
随机推荐
- vue2项目使用axios发送请求
前言:在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 目前主流的 Vue 项目,都选 ...
- SQL查询--选择运算(1)
/** 本贴使用MySQL数据库 **/ WHERE子句可以实现关系代数中的选择运算,用于查询满足选择条件的元组,常用的查询条件有: 1.比较运算:>,>=,<,<=,=, ...
- STM32经典概述(干货 )
STM32经典概述(干货 ) 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语. 在网上看的,觉得挺好的,分享过来了 整理如下: AMBA:先进单片机总线架构 ADK:AMBA设计套 ...
- [2016-09-23]远程安装、更新windows服务bat脚本分享
话不多说,有兴趣的自己可以仔细研究下涉及的命令:net use.sc.robocopy 脚本 set BuildConfig=[ENV] set BuildExeName=[your_exe_name ...
- MariaDB体验1----数据库安装
之前一直都是使用的微软Sql Server数据库,现在在学习数据分析,要用到mysql.刚好公司在进行云架构升级,数据库选型为MariaDB,就顺势安装体验了一把MariaDB.这里记录一下学习过程. ...
- java常见面试题(一)
一.Spring面试的问题 1.spring的事务认识 事务注解方式: @Transactional,当标于类前时,该类的所有public方法都进行事物处理. 事务的传播行为: @Transactio ...
- IntelliJ IDEA使用(一)基本设置与类、方法模板设置
其实之前一直开发都是在使用的是Eclipse,但是最近在做Maven项目的时候要用IntelliJ IDEA,据说这个idea功能非常的强大,最近在使用的时候发现如果适应的真的是非常的强大.感觉是比E ...
- 转:【Java并发编程】之二十二:并发新特性—障碍器CyclicBarrier(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17512983 CyclicBarrier(又叫障碍器)同样是Java5中加入的新特性,使用 ...
- 201521123110《java程序设计》第八周学习总结
1. 本周学习总结 2. 书面作业 1.List中指定元素的删除 上课就交了,编写时主要用remove方法,然后Iterator的remove()方法可删除当前下标为i的元素后,该元素后的所有元素将往 ...
- 201521123003《Java程序设计》第7周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源 ...