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 数组的指针操作实现代码
Feb 08 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
详解php的socket通信
Aug 11 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
php use和include区别总结
Oct 13 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
linux下编译安装memcached服务
2014/08/03 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
JavaScript this 深入理解
2009/07/30 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
党员先锋岗事迹材料
2014/05/08 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
岳庙导游词
2015/02/04 职场文书
小学数学国培研修日志
2015/11/13 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers