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时间字段究竟使用INT还是DateTime的说明
Feb 27 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php文件系统处理方法小结
May 23 PHP
php生成与读取excel文件
Oct 14 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
PHP反射基础知识回顾
Sep 10 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/05/21 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
php封装一个异常的处理类
2017/06/08 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python简单计算文件夹大小的方法
2015/07/14 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Django工程的分层结构详解
2019/07/18 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
详解python内置模块urllib
2020/09/09 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
年级组长自我鉴定
2014/02/22 职场文书
记账会计岗位职责
2014/06/16 职场文书
社会实践活动总结
2015/02/05 职场文书
行政上诉状范文
2015/05/23 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python