Welcome to

Mr.Xiong

Home / Api / 网站会员注册之发送邮件验证码

网站会员注册之发送邮件验证码

一、基础概念

a)PHPMailer

PHPMailer是一个用于发送电子邮件的PHP类库。
要求PHP版本>=5.5.0,必须安装Openssl扩展,不建议在本地发邮件,IP信誉太低,有可能会出现554。可先做测试并注意邮件内容,不重复、不是垃圾邮件。

b)Composer(此博客中有安装方式)

Composer是 PHP5.3以上 的一个依赖管理工具。
比如我们去旅游是一个项目,那你需要依赖于手机、水、食物等等,手机又需要依赖充电宝。

再举个例子,我们使用Bootstrap['bu:tstræp]里面的Js,它需要依赖JQuery。Composer就是解决些问题,并且它对应的有一个仓库,里面有很多优秀的包,就像一个360软件管家,我们可以从上面下载到优质的软件。

c)Composer中国镜像

使用方式参考此处:https://pkg.phpcomposer.com/

二、准备工作

a)PHP环境配置

使用PHPStudy和Wamp都可以,或者直接在搭建好Lamp或者Lnmp上开发更好。

b)下载PHPMailer

  • 方案1(推荐✨):
    Composer来下载。
    优势:可以下载你能想到的任意类库,而且很多框架与项目在用Composer。
    劣势:初期有一小部分学习成本。
  • 方案2(不推荐):
    去Github直接下载压缩包(搜索PHPMailer)https://github.com/PHPMailer/PHPMailer
    或者去百度下载别人写好的类。
    优势:学习成本低。
    劣势:不能理解新型的组件化编程思想,很有局限性,自己需要解决自动载入与依赖关系。

c)两个测试邮箱

此案例使用163邮箱发送邮件,使用其它邮箱操作大同小异。

d)注册页面模板

三、下载PHPMailer

打开命令。可以通过PHPStorm底部的Terminal或者Cmd打开,进入到我们刚刚建立好的项目目录执行。

composer init

此行命令生成Composer.json文件。我们现在只是简单的用它来下载PHPMailer,所以一路回车即可完成Composer.json文件的创建。这个时候我们会看到目录下面有一个composer.json,我们需要修改为中国镜像,这样速度会更快。

接着执行安装PHPMailer。

composer require phpmailer/phpmailer

出现以下目录即安装完成。

四、部署Mail类

进入 https://github.com/PHPMailer/PHPMailer ,不会英文没关系,找见【A Simple Example】部分copy到我们的Mail.php文件中稍作修改即可,操作如下:

<?php
/**'-------------------------------------------------------------------
 * Author: 熊伟洋<hi@xiongweiyang.com>
 * WeChat: hello_McGrady
 *     QQ:434493420
 *  Motto: Hungry & Humble
 *   Date: 2017/12/6
 *   Time: 16:52
 *'-------------------------------------------------------------------*/
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

class Mail
{
   //自加属性给Catch用
   public $errorInfo;
   //发送方法 参数一:收件邮箱;参数二:内容。
   public function send($address,$content){
      $mail = new PHPMailer(true);                              // Passing `true` enables exceptions
      try {
         $mail->CharSet = 'UTF-8';//设置收邮件不乱码
         //Server settings
//       $mail->SMTPDebug = 2;                                 // Enable verbose debug output
         $mail->isSMTP();                                      // Set mailer to use SMTP
         $mail->Host = 'smtp.163.com';  // Specify main and backup SMTP servers
         $mail->SMTPAuth = true;                               // Enable SMTP authentication
         $mail->Username = 'hello_mcgrady@163.com';                 // SMTP username
         $mail->Password = '********';                           // SMTP password  ****授权码 请看下文****
         $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
         $mail->Port = 994;                                    // TCP port to connect to

         //Recipients
         $mail->setFrom('hello_mcgrady@163.com', 'Mr.Xiong');//发送者
//       $mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
         $mail->addAddress($address);               // Name is optional Name是可选项 发送给谁
//       $mail->addReplyTo('info@example.com', 'Information');//回复不需要
//       $mail->addCC('cc@example.com');
//       $mail->addBCC('bcc@example.com');

         //Attachments 附件不需要
//       $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//       $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

         //Content  发送内容
         $mail->isHTML(true);                                  // Set email format to HTML内容是否可以支持Html
         $mail->Subject = 'Mr.Xiong邮箱验证';//项目标题
         $mail->Body    = $content;//具体内容
//       $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';//附加信息不需要

         $mail->send();
//       echo 'Message has been sent';
         return true;//自加
      } catch (Exception $e) {
//       echo 'Message could not be sent.';
//       echo 'Mailer Error: ' . $mail->ErrorInfo;
         $this->errorInfo = $mail->ErrorInfo;
         return false;//自加
      }
   }
}

以上代码中需要开启SMTP,登录你的163邮箱操作如下几步:

五、实现邮件发送

建立一个单入口文件,写一个类,类名随便,其中两个主要方法,分别为发送验证码和用户注册。

发送验证码方法中,实例化Mail类调用send方法并传好参数,参数一为收件人邮箱,也就是表单提交过来的数据;参数二为随机4位字符即可,看你的需求。

用户注册方法更简单,在发送验证码方法调用send方法之前,将你随机设定的字符存入Session当中,然后进行比对。同样咱们还可以做时间限制,例如超过60S进行注册,验证码作废,那咋做呢?自己想!学会举一反三!

六、拓展

1.实现忘记密码并通过邮箱找回密码。

2.用户订阅你的网站给他发信息。

3.新型产品上市,推广产品,做广告。

 

好啦,此篇博文讲解得不能够再详细了,剩下的交给你们啦!觉得此博文有帮助请赞赏

Hungry & Humble。

 

Finally,谢谢大家的阅读!祝每天开心~
版权声明:本文为博主原创文章,未经博主允许不得转载。

赞赏

微信赞赏支付宝赞赏

一条回应 “网站会员注册之发送邮件验证码”
  1. 注册/登录邮箱验证(网易163邮箱) 2018年7月8日 on 上午2:27 回复

    […] 1* 根据熊工博客安装了composer和PHPMail(详见http://www.xiongweiyang.com/%E7%BD%91%E7%AB%99%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C%E4%B9%8B%E5%8F%91…) […]

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

雄心勃勃但谦卑温逊!

>> <<