phpmailer绑定邮箱的实现方法


Posted in PHP onDecember 01, 2016

本文实例讲述了phpmailer绑定邮箱的实现方法。分享给大家供大家参考,具体如下:

效果如下:

phpmailer绑定邮箱的实现方法

phpmailer绑定邮箱的实现方法

1.配置

<?php
return array (
 'email_host' => 'smtp.aliyun.com',
 'email_port' => '25',
 'email_username' => 'diandodo@aliyun.com',
 'email_password' => 'xxxxxx',
 'email_from' => 'diandodo@aliyun.com',
 'email_fromname' => '点多多',
 'email_subject' => '助店宝商户激活邮箱',
 'email_body' => "尊敬的用户{$username}您好:
    您的激活码为<font color='red'>{$code}</font>,请将激活码输入进行验证! 激活码有效期为6分钟^_^",
);

2.发送函数

// 发送邮件
private function _sendEmail($email,$code,$username = '') {
    import('@.ORG.phpmailer');
    $mail = new PHPMailer(); //建立邮件发送类,类名不一定与引入的文件名相同
    $mail->CharSet = "UTF-8";
    $mail->IsSMTP(); // 使用SMTP方式发送
    $mail->Host = C('email_host'); // 您的企业邮局域名
    $mail->SMTPAuth = true; // 启用SMTP验证功能
    $mail->Username = C('email_username'); // 邮局用户名(请填写完整的email地址)
    $mail->Password = C('email_password'); // 邮局密码
    $mail->Port=C('email_port');
    $mail->From = C('email_from'); //邮件发送者email地址
    $mail->FromName = C('email_fromname');
    $mail->AddAddress("$email", "$username");
    $mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
    $mail->Subject = C('email_subject'); //邮件标题
    $email_body = "尊敬的用户<strong>{$username}</strong>您好:
    您的激活码为<font color='red'>{$code}</font>,请将激活码输入进行验证! 激活码有效期为6分钟^_^";
    $mail->Body = $email_body; //邮件内容,上面设置HTML,则可以是HTML
    if(!$mail->Send())
    {
      return array('status'=>2,'info'=>$mail->ErrorInfo);
    } else {
      return array('status'=>1,'info'=>'发送成功');;
    }
}

3.生成验证码保存到session中,并发送

// 发送邮箱激活码
public function sendActivationcode() {
    session($this->activationtime, null);
    $activationtime = session($this->activationtime);
    $email = $this->_post('email', 'trim');
    if (IS_AJAX && (!$activationtime || time() > $activationtime)) {
      $activationcode = rand(1000, 9999);
      $res = $this->_sendEmail($email,$activationcode,$this->user['username']);
      if($res['status'] == 1) {
        //设置发送限制时间
        session($this->activationtime, time() + 50);
        session($this->activationcode, array('code' => $activationcode, 'time' => time() + 600));
        $this->ajaxReturn(array('result' => true));
      } else {
        //发送失败写入日志文件
        $log = date('Y-m-d H:i:s') . " 发送失败:{$res['info']}" . PHP_EOL;
        file_put_contents(RUNTIME_PATH . 'Log/activationcode.log', $log, FILE_APPEND);
        $this->ajaxReturn(array('result' => false, 'error' => $res['info']));
      }
    } else {
      $this->ajaxReturn(array('result' => false, 'error' => '错误的请求'));
    }
}

4.验证并绑定

// 绑定邮箱
public function bind_email() {
    if (IS_POST) {
      // 获取验证码
      $activationcode = $this->_post('activationcode','trim');
      $email = $this->_post('email','trim');
      $session_activationcode = session($this->activationcode);
      if (time() > $session_activationcode['time'] || $activationcode != $session_activationcode['code']) {
        $this->error('验证码有误');
      } else {
        M('User')->where(array('id'=>$this->user['id']))->save(array('email'=>$email));
        $this->success('绑定成功',U('Account/my'));
      }
    } else {
      $this->display();
    }
}

小结:

1. 这是一种思路,跟发送手机验证码差不多。
2. 区别在于一个是发送短信,一个是发送邮件。
3. 二一个,一个发送主体是阿里大鱼,一个发送主体是公司申请的邮箱。
4. 三一个,发送短信收费,发送邮件免费。

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

PHP 相关文章推荐
谈谈新手如何学习PHP
Dec 14 PHP
php 小乘法表实现代码
Jul 16 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
php 获取本地IP代码
Jun 23 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
thinkPHP实现多字段模糊匹配查询的方法
Dec 01 #PHP
thinkPHP商城公告功能开发问题分析
Dec 01 #PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 #PHP
PHP 芝麻信用接入的注意事项
Dec 01 #PHP
PHP中静态变量的使用方法实例分析
Dec 01 #PHP
php版阿里云OSS图片上传类详解
Dec 01 #PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 #PHP
You might like
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php多文件上传实现代码
2014/02/20 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
关于js类的定义
2011/06/28 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
vue实现图片上传功能
2020/05/28 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
趣味体育活动方案
2014/02/08 职场文书
《学会合作》教学反思
2014/04/12 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
给上级领导的感谢信
2015/01/22 职场文书
学校百日安全活动总结
2015/05/07 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
一起来学习Python的元组和列表
2022/03/13 Python