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‘ =>‘[email protected]‘,//发件人的邮箱名
    ‘MAIL_PASSWORD‘ =>‘9999999‘,//163邮箱发件人授权密码
    ‘MAIL_FROM‘ =>‘[email protected]‘,//发件人邮箱地址
    ‘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邮箱验证码接收情况;

时间: 2024-10-10 10:23:41

Thinkphp3.2版本使用163邮箱发(验证码)邮件的相关文章

mailx加163邮箱发邮件

mailx加163邮箱发邮件 参考:https://www.cnblogs.com/myvic/p/9579954.html 配置 $ yum install mailx -y $ vim /etc/mail.rc set [email protected] set smtp=smtps://smtp.163.com:465 set [email protected] set smtp-auth-password=zhj6b266 set smtp-auth=login set nss-conf

给国外电子邮箱发海外邮件用什么邮箱好?

给国外电子邮箱发海外邮件用什么邮箱好?企业在与海外客户合作中使用的邮件通信是最常用的沟通手段,但是由于各种原因,很多企业的领导们都为邮件不能完全保证即时的收发而头疼,据不少客户的反馈,他们经常遇到的情况是邮件发给海外的客户后石沉大海,业务员无法确认客户是否收到,因此耽误了商机.国际邮件无法保证的最大的原因是国外的邮件服务器的垃圾邮件过滤引擎拦截了来自中国的邮件,企业的邮件服务器只要是架设在中国国内,使用中国的IP,海外邮件就会受到影响.稳定的邮件收发是一套合格的邮件系统的基础功能,TOM邮箱作为

登录163邮箱发邮件

#encoding=utf-8 from selenium import webdriver import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By #打开浏览器 driver = webdriver.

使用新申请的163邮箱发邮件出现的问题

前提:新申请的163邮箱. 老的126或163在发送时没有问题.    貌似网易对于新申请的邮箱账号增加了安全认证机制. C#使用163的SMTP服务器发送邮件 http://www.cnblogs.com/OpenCoder/archive/2010/07/16/1779247.html 发送时,异常提示: 邮箱不可用. 服务器响应为:User has no permission http://www.jb51.net/softjc/387126.html 登陆163设置好客户端授权后, 在发

在Linux中如何向163邮箱发邮件

linux收发邮件 1.首先要保证自己的Linux服务器能够ping通www.baidu.com ping www.baicu.com 2.申请一个@163.com个人邮箱 3.将进入邮箱后进行如下设置. 1.首页电击设置,点击POP3/SMTP/IMAP设置. 2.将对应选项下所有能选的都选上.然后自己设置一个授权密码这个密码记好,后面要用. 4.在Linux中将如下命令追加到, /etc/mail.rc的文件最后. # send email set from=此处填写邮箱地址 set smt

app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !

最近有个项目,要发邮件给用户设定的邮箱报警,然后就用了163邮箱,代码是网上借来的^^,如下: package com.smartdoorbell.util; import android.os.AsyncTask; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.CommandMap; import javax.activation.Mailca

163邮箱联系人与日历要如何同步导入到 Outlook 2007~2013

很多人都想知道,163邮箱联系人要怎么导入 outlook,毕竟在办公室我们还是比较常用outlook的. 但是,这个问题其实一直没有很好的解决方法,于是我们常常看到有人教学使用由163网页版进行汇出再到outlook进行所谓的csv汇入这样的方式,其实这种方式实在没有什么效率,更别说日历这块更是拿不出办法可以同步了. 但是现在都已经是云端计算的时代了,连iPhone都能够利用CardDAV及CalDAV同步163邮箱的联系人以及日历了,凭什么号称商业环境最重要的办公软件outlook却不可以.

ios9邮箱添加163邮箱

电脑登陆163邮箱??设置??开启pop3/smtp/imap功能??保存.开启后系统会给你个"客户端授权密码",同时会发短信到你手机里. 打开手机,设置??邮件,通讯录,日历??添加账户??名称:随便写,电子邮件:你的邮箱地址,密码:复制你刚才收到的短信那个客户端授权密码粘贴上去,不是你平时的密码!描述:不用管??下一步??保存 重新进去你刚才保存的账户??收件服务器一栏,主机名填写imap.163.com,用户名和密码跟前面一样就可以了记住,是客户端授权密码!重要的事情要说两遍!

centos 7 postfix配置163邮箱发送邮件

[[email protected] .certs]# vim /etc/mail.rc #修改配置文件,最后面添加即可 set [email protected] set smtp.163.com set smtp-auth-user=wcczcl set smtp-auth-password=1454545 set smtp-auth=login set smtp-use-starttls set ssl-verify=ignore set nss-config-dir=/etc/pki/n