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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
Laravel 修改默认日志文件名称和位置的例子
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中的traits简单使用实例
2015/05/13 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Web开发之JavaScript
2012/03/29 Javascript
javascript动态加载三
2012/08/22 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Django中URLconf和include()的协同工作方法
2015/07/20 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
利用Python实现kNN算法的代码
2019/08/16 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python生成器generator原理及用法解析
2020/07/20 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
房地产促销活动方案
2014/03/01 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
村官个人总结范文
2015/03/03 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL