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 调用远程url的六种方法小结
Nov 02 PHP
PHP输入流php://input介绍
Sep 18 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
PHP 导出Excel示例分享
Aug 18 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
取得父标签
2006/11/14 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
python33 urllib2使用方法细节讲解
2013/12/03 Python
简单的通用表达式求10乘阶示例
2014/03/03 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
python结合API实现即时天气信息
2016/01/19 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python如何实现定时器功能
2020/05/28 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
四年级下册教学反思
2014/02/01 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
求职教师自荐书
2014/06/19 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书