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 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
PHP邮件群发机实现代码
Feb 16 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP自定义错误处理的方法分析
Dec 19 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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 正则匹配函数体
2009/08/25 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
社团招新策划书
2014/02/04 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
超市国庆节促销方案
2014/02/20 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
2014年关工委工作总结
2014/11/17 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
python基于机器学习预测股票交易信号
2021/05/25 Python
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
Python语言中的数据类型-序列
2022/02/24 Python
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python