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 相关文章推荐
通过html表格发电子邮件
Oct 09 PHP
建立文件交换功能的脚本(三)
Oct 09 PHP
php输入流php://input使用浅析
Sep 02 PHP
php随机抽奖实例分析
Mar 04 PHP
PHP查询快递信息的方法
Mar 07 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 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
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python SVD压缩图像的实现代码
2019/11/05 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
培训主管的岗位职责
2013/11/23 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
党建工作经验交流材料
2014/05/25 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
个人合伙协议书范本
2014/10/14 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
工作收入证明范本
2015/06/12 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS