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 相关文章推荐
MYSQL环境变量设置方法
Jan 15 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php隐藏IP地址后两位显示为星号的方法
Nov 21 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php析构函数的简单使用说明
Aug 24 PHP
PHP微信开发之有道翻译
Jun 23 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
岗位标兵事迹材料
2014/05/17 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
离婚协议书标准格式
2014/10/04 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Python first-order-model实现让照片动起来
2022/06/25 Python