Home  >  Article  >  Backend Development  >  How to implement phpmailer binding mailbox

How to implement phpmailer binding mailbox

高洛峰
高洛峰Original
2016-12-30 10:24:301451browse

The example of this article describes the implementation method of phpmailer binding mailbox. Share it with everyone for your reference, the details are as follows:

The effect is as follows:

How to implement phpmailer binding mailbox

How to implement phpmailer binding mailbox

1. Configuration

<?php
return array (
 &#39;email_host&#39; => &#39;smtp.aliyun.com&#39;,
 &#39;email_port&#39; => &#39;25&#39;,
 &#39;email_username&#39; => &#39;diandodo@aliyun.com&#39;,
 &#39;email_password&#39; => &#39;xxxxxx&#39;,
 &#39;email_from&#39; => &#39;diandodo@aliyun.com&#39;,
 &#39;email_fromname&#39; => &#39;点多多&#39;,
 &#39;email_subject&#39; => &#39;助店宝商户激活邮箱&#39;,
 &#39;email_body&#39; => "尊敬的用户{$username}您好:
    您的激活码为<font color=&#39;red&#39;>{$code}</font>,请将激活码输入进行验证! 激活码有效期为6分钟^_^",
);

2. Send function

// 发送邮件
private function _sendEmail($email,$code,$username = &#39;&#39;) {
    import(&#39;@.ORG.phpmailer&#39;);
    $mail = new PHPMailer(); //建立邮件发送类,类名不一定与引入的文件名相同
    $mail->CharSet = "UTF-8";
    $mail->IsSMTP(); // 使用SMTP方式发送
    $mail->Host = C(&#39;email_host&#39;); // 您的企业邮局域名
    $mail->SMTPAuth = true; // 启用SMTP验证功能
    $mail->Username = C(&#39;email_username&#39;); // 邮局用户名(请填写完整的email地址)
    $mail->Password = C(&#39;email_password&#39;); // 邮局密码
    $mail->Port=C(&#39;email_port&#39;);
    $mail->From = C(&#39;email_from&#39;); //邮件发送者email地址
    $mail->FromName = C(&#39;email_fromname&#39;);
    $mail->AddAddress("$email", "$username");
    $mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
    $mail->Subject = C(&#39;email_subject&#39;); //邮件标题
    $email_body = "尊敬的用户<strong>{$username}</strong>您好:
    您的激活码为<font color=&#39;red&#39;>{$code}</font>,请将激活码输入进行验证! 激活码有效期为6分钟^_^";
    $mail->Body = $email_body; //邮件内容,上面设置HTML,则可以是HTML
    if(!$mail->Send())
    {
      return array(&#39;status&#39;=>2,&#39;info&#39;=>$mail->ErrorInfo);
    } else {
      return array(&#39;status&#39;=>1,&#39;info&#39;=>&#39;发送成功&#39;);;
    }
}

3. Generate verification code, save it in session, and send

// 发送邮箱激活码
public function sendActivationcode() {
    session($this->activationtime, null);
    $activationtime = session($this->activationtime);
    $email = $this->_post(&#39;email&#39;, &#39;trim&#39;);
    if (IS_AJAX && (!$activationtime || time() > $activationtime)) {
      $activationcode = rand(1000, 9999);
      $res = $this->_sendEmail($email,$activationcode,$this->user[&#39;username&#39;]);
      if($res[&#39;status&#39;] == 1) {
        //设置发送限制时间
        session($this->activationtime, time() + 50);
        session($this->activationcode, array(&#39;code&#39; => $activationcode, &#39;time&#39; => time() + 600));
        $this->ajaxReturn(array(&#39;result&#39; => true));
      } else {
        //发送失败写入日志文件
        $log = date(&#39;Y-m-d H:i:s&#39;) . " 发送失败:{$res[&#39;info&#39;]}" . PHP_EOL;
        file_put_contents(RUNTIME_PATH . &#39;Log/activationcode.log&#39;, $log, FILE_APPEND);
        $this->ajaxReturn(array(&#39;result&#39; => false, &#39;error&#39; => $res[&#39;info&#39;]));
      }
    } else {
      $this->ajaxReturn(array(&#39;result&#39; => false, &#39;error&#39; => &#39;错误的请求&#39;));
    }
}

4. Verify and bind

// 绑定邮箱
public function bind_email() {
    if (IS_POST) {
      // 获取验证码
      $activationcode = $this->_post(&#39;activationcode&#39;,&#39;trim&#39;);
      $email = $this->_post(&#39;email&#39;,&#39;trim&#39;);
      $session_activationcode = session($this->activationcode);
      if (time() > $session_activationcode[&#39;time&#39;] || $activationcode != $session_activationcode[&#39;code&#39;]) {
        $this->error(&#39;验证码有误&#39;);
      } else {
        M(&#39;User&#39;)->where(array(&#39;id&#39;=>$this->user[&#39;id&#39;]))->save(array(&#39;email&#39;=>$email));
        $this->success(&#39;绑定成功&#39;,U(&#39;Account/my&#39;));
      }
    } else {
      $this->display();
    }
}

Summary:

1. This is an idea, similar to sending a mobile phone verification code.
2. The difference is that one is for sending text messages and the other is for sending emails.
3. Two, one sending subject is Alibaba Dayu, and the other sending subject is the email address applied for by the company.
4. There is a charge for sending text messages and free for sending emails.

I hope this article will be helpful to everyone in PHP programming.

For more articles related to the implementation method of phpmailer binding mailbox, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn