仿聯想商城laravel實戰---7、lavarel中如何給用戶發送郵件


仿聯想商城laravel實戰---7、lavarel中如何給用戶發送郵件

一、總結

一句話總結:

設置郵件服務器,比如163郵箱
lavarel中配置郵件服務,在.env中
控制器中使用Mail對象發送郵件
也可直接百度“lavarel中 如何發送郵件” 或 手冊的郵件發送里面去看

 

1、如何設置郵件服務器?

1、登錄163郵箱
2、設置》POP3/SMTP
3、設置授權密碼

 

2、laravel中配置郵件服務器在哪個文件(及如何配置)?

.env 以及 config里面的mail.php(設置from(發送方))
打開.env文件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=18734136852@163.com
MAIL_PASSWORD=a123456
MAIL_ENCRYPTION=null
MAIL_FROM_NAME=聯想賬戶中心

 

 

3、lavarel中向用戶發送郵件有哪兩種主要方式?

發送文字:Mail對象的raw()方法
發送頁面:Mail對象的send()方法
1、發送文字

\Mail::raw('我愛你雲知夢',function($message){
    $message->to("892865095@qq.com");
    $message->subject("親愛的用戶,恭喜您注冊成功");
});

2、發送頁面
send()方法
\Mail::send('mail.index',[],function($message){
$message->to("892865095@qq.com");
$message->subject("親愛的用戶,恭喜您注冊成功");
});

 

 

4、lavarel中發送驗證郵件,讓用戶自己激活如何實現?

發送帶參數的‘’立即激活‘’頁面到用戶郵箱:發送的驗證郵件里面有立即激活的a標簽,這個a標簽是直接跳轉到網站頁面,這個a標簽也帶上用戶id和token等參數,
控制器中激活:根據用戶在郵箱中點擊的鏈接及鏈接的參數完成激活

 

5、接收頁面傳過來的參數是在路由中還是在控制器中?

路由中

 

6、如何判斷用戶激活的時候token值是否正確?

將token值存入數據庫,和用戶激活傳過來的token值做對比,激活成功之后更新token值(防止重復激活)
// 激活賬戶

public function jihuo($id,$token){

  // 查詢用戶存在

  $data=\DB::table("user")->where("id",$id)->first();

  // 判斷token

  if ($token==$data->token) {
      # code...
      $arr=array();

      $arr['status']=1;
      $arr["token"]=str_random(50);

      // 進行數據庫狀態的修改 激活成功 跳轉到登陸頁面
      if(\DB::table("user")->where("id",$id)->update($arr)){
          return redirect("/login");
      }

  }else{
      echo "您的token已經過期";
  }

}

 

7、lavarel閉包中如何使用外部變量?

use方法:\Mail::send('mail.index',["id"=>$id,"token"=>$data['token']],function($message) use($email){
$email=$arr['email'];
\Mail::send('mail.index',["id"=>$id,"token"=>$data['token']],function($message) use($email){
    $message->to($email);
    $message->subject("親愛的用戶,恭喜您注冊成功");
});

 

8、郵件激活可以優化的部分?

用戶注冊之后,彈出一個立即激活的頁面,這個頁面可以直接跳轉到用戶的郵箱

 

9、a鏈接如何跳轉到用戶注冊的郵箱(比如qq郵箱,比如用戶激活賬戶的時候)?

直接根據@后面的部分特判郵箱服務器地址
function gotomail($mail) {
    $temp=explode('@',$mail);
    $t=strtolower($temp1);

    if ($t=='163.com') {
        return 'mail.163.com';
    } else if ($t=='vip.163.com') {
        return 'vip.163.com';
    } else if ($t=='126.com') {
        return 'mail.126.com';
    } else if ($t=='qq.com' || $t=='vip.qq.com' || $t=='foxmail.com') {
        return 'mail.qq.com';
    } else if ($t=='gmail.com') {
        return 'mail.google.com';
    } else if ($t=='sohu.com') {
        return 'mail.sohu.com';
    } else if ($t=='tom.com') {
        return 'mail.tom.com';
    } else if ($t=='vip.sina.com') {
        return 'vip.sina.com';
    } else if ($t=='sina.com.cn' || $t=='sina.com') {
        return 'mail.sina.com.cn';
    } else if ($t=='tom.com') {
        return 'mail.tom.com';
    } else if ($t=='yahoo.com.cn' || $t=='yahoo.cn') {
        return 'mail.cn.yahoo.com';
    } else if ($t=='tom.com') {
        return 'mail.tom.com';
    } else if ($t=='yeah.net') {
        return 'www.yeah.net';
    } else if ($t=='21cn.com') {
        return 'mail.21cn.com';
    } else if ($t=='hotmail.com') {
        return 'www.hotmail.com';
    } else if ($t=='sogou.com') {
        return 'mail.sogou.com';
    } else if ($t=='188.com') {
        return 'www.188.com';
    } else if ($t=='139.com') {
        return 'mail.10086.cn';
    } else if ($t=='189.cn') {
        return 'webmail15.189.cn/webmail';
    } else if ($t=='wo.com.cn') {
        return 'mail.wo.com.cn/smsmail';
    } else if ($t=='139.com') {
        return 'mail.10086.cn';
    } else {
        return '';
    }
}

 

 

 

 

二、內容在總結中

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM