Maison  >  Article  >  cadre php  >  Explication détaillée de la façon dont le framework ThinkPHP implémente la fonction d'activation du courrier électronique

Explication détaillée de la façon dont le framework ThinkPHP implémente la fonction d'activation du courrier électronique

藏色散人
藏色散人avant
2021-06-11 12:00:044051parcourir

La colonne tutorielle suivante du framework thinkphp vous présentera comment le framework ThinkPHP implémente la fonction d'activation par e-mail. J'espère qu'elle sera utile aux amis dans le besoin !

Les détails sont les suivants :

Le cadre de configuration adopte le cadre ThinkPHP3.1, comme indiqué ci-dessous :

Diagramme du processus de configuration :

Explication détaillée de la façon dont le framework ThinkPHP implémente la fonction dactivation du courrier électronique

1. Modifiez la configuration comme suit :

<?php
return array(
  //&#39;配置项&#39;=>&#39;配置值&#39;
    &#39;MAIL_ADDRESS&#39;=>&#39;shcg666@sohu.com&#39;, // 邮箱地址
    &#39;MAIL_SMTP&#39;=>&#39;smtp.sohu.com&#39;, // 邮箱SMTP服务器
    &#39;MAIL_LOGINNAME&#39;=>&#39;shcg666@sohu.com&#39;, // 邮箱登录帐号
    &#39;MAIL_PASSWORD&#39;=>&#39;******&#39;, // 邮箱密码
);

2. Ajouter une classe

<?php
class EmailAction extends Action{
  /*
  * microtime() 函数返回当前 Unix 时间戳和微秒数。
  * mt_srand() 播种 Mersenne Twister 随机数生成器。从 PHP 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。
  * 注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。
  * pow — 指数表达式
  */
  //random()这个函数是我用来生成一个随机数的,$numeric = 0生成一个6位的大小写字母与数字混合的字符串。$numeric = 1生成一个6位数字的字符串
  public function random($length = 6 , $numeric = 0) {
  PHP_VERSION < &#39;4.2.0&#39; && mt_srand((double)microtime() * 1000000);
  if($numeric) {
    $hash = sprintf(&#39;%0&#39;.$length.&#39;d&#39;, mt_rand(0, pow(10, $length) - 1));
  } else {
    $hash = &#39;&#39;;
    $chars = &#39;ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz&#39;;
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++) {
      $hash .= $chars[mt_rand(0, $max)];
    }
  }
  return $hash;
  }
  //发送邮件的方法
  public function index(){
    //生成6位激活码
    $random = $this->random(6,0);
    //获取本网站的域名,域名在config里面配置下.
    //例如&#39;domain&#39; => &#39;http://write.blog.csdn.net&#39;,
    $domain = C(&#39;domain&#39;);
    //生成激活码模块地址
    $url = $domain.U("Home/Email/activate")."/?yam=$random";
    //将邮件地址和随机数放入session
    session("shcg666@sohu.com","$random");
    //发送邮件
    SendMail("shcg666@sohu.com","这是邮件标题","将此网址复制到浏览框$url");
  }
}
function SendMail($address,$title,$message){
  //引入文件
  vendor(&#39;PHPMailer.class#PHPMailer&#39;);
  require("phpmailer/class.phpmailer.php");
  require("phpmailer/class.smtp.php");
  //实例化邮件类
  $mail=new PHPMailer();
  // 设置PHPMailer使用SMTP服务器发送Email
  $mail->IsSMTP();
  // 设置邮件的字符编码,若不指定,则为&#39;UTF-8&#39;
  $mail->CharSet=&#39;UTF-8&#39;;
  // 添加收件人地址,可以多次使用来添加多个收件人
  $mail->AddAddress($address);
  // 设置邮件正文
  $mail->Body=$message;
  // 设置邮件头的From字段。//发件人
  $mail->From=C(&#39;MAIL_ADDRESS&#39;);
  // 设置发件人名字
  $mail->FromName=&#39;LilyRecruit&#39;;
  // 设置邮件标题
  $mail->Subject=$title;
  // 设置SMTP服务器。
  $mail->Host=C(&#39;MAIL_SMTP&#39;);
  // 设置为"需要验证"
  $mail->SMTPAuth=true;
  // 设置用户名和密码。
  $mail->Username=C(&#39;MAIL_LOGINNAME&#39;);
  $mail->Password=C(&#39;MAIL_PASSWORD&#39;);
  // 发送邮件。
  return($mail->Send());
}

3. Fichiers importés

Téléchargez le package PHPMailer depuis Internet et copiez class.smtp.php et class.phpmailer.php directement sans aucune modification.

Cliquez sur le lien

pour télécharger le fichier class.smtp.php (https://share.weiyun.com/6ECQn7Mq) .

Cliquez sur le lien

pour télécharger l'exemple de code complet du fichier class.phpmailer.php (https://share.weiyun.com/beakkcPt) .

La configuration est terminée, la méthode de traitement spécifique nécessite d'autres modifications.

4. Adresses du serveur de messagerie commun (serveur de réception et serveur de messagerie d'envoi)

Boîte aux lettres Tencent QQ

Serveur de réception : pop.qq.com
Envoi Serveur : smtp.qq.com

Boîte aux lettres NetEase 126

Serveur de réception : pop3.126.com
Serveur d'envoi : smtp.126.com

Mail gratuit NetEase 163

Serveur de réception : pop.163.com
Serveur d'envoi : smtp.163.com

Boîte mail NetEase 163VIP

Serveur de réception : pop.vip.163.com
Serveur d'envoi : smtp. vip.163.com

NetEase 188 Fortune Mail

Serveur de réception : pop.188.com
Serveur d'envoi : smtp.188.com

Boîte aux lettres NetEase yes.net

Serveur de réception : pop.yeah.net
Serveur d'envoi : smtp.yeah.net

Boîte mail Netease netease.com

Serveur de réception : pop.netease.com
Serveur d'envoi : smtp. netease.com

Boîte mail payante Sina

Serveur de réception : pop3.vip.sina.com
Serveur d'envoi : smtp.vip.sina.com

Boîte mail gratuite Sina

Serveur de réception : pop3.sina.com.cn
Serveur d'envoi : smtp.sina.com.cn

Boîte aux lettres Sohu

Serveur de réception : pop3.sohu.com
Serveur d'envoi : smtp. sohu.com

21cn Happy Mail

Serveur de réception : vip.21cn.com
Serveur d'envoi : vip.21cn.com

21cn Economic Mail

Serveur de réception : pop .163.com
Serveur d'envoi : smtp.163.com

boîte mail tom

Serveur de réception : pop.tom.com
Serveur d'envoi : smtp.tom.com

Boîte aux lettres 263

Serveur de réception : 263.net
Serveur d'envoi : smtp.263.net

Boîte aux lettres NetEase 163.com

Serveur de réception : rwypop.china.com
Serveur d'envoi :rwypop.china.com

Boîte aux lettres Yahoo

Serveur de réception : pop.mail.yahoo.com
Serveur d'envoi : smtp.mail.yahoo.com

Boîte aux lettres Gmail

Serveur de réception : pop.gmail.com
Serveur d'envoi : smtp.gmail.com

Recommandations associées :

Les 10 derniers didacticiels vidéo thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer