用戶註冊郵箱通知和短信通知詳解(php)

分享概要:講述yii框架,用戶註冊然後以郵箱通知和短信通知用戶註冊狀態。短信使用阿里雲,郵箱使用swiftmailer插件。
支持php~~~
感覺博主寫的不錯,請小夥伴們轉載和分享點贊喲!

功能點: 用戶註冊通知

用戶註冊類:

 public function actionCreateUsers(){
 //數據過濾 數據判斷   這個省略了。。。。 直接看重點
 if($model->save()){ //對用戶數據的保存
                $data = $model->attributes;//獲取當前保存用戶的全部信息
                $data['password_original'] =$password; //明文密碼
                //發送郵件通知
                \common\utils\Tool::sendMail($model->email, '恭喜你在xxx系統註冊成功。', $data, 'usersign') ;//p1 :用戶郵箱 p2:通知信息標題 p3:用戶數據 p4:通知信息模板
                //發送短信通知 阿里雲
                SMsDemo::sendMsgOnRegister($model->mobile_phone,$model->real_name,
                        $model->user_name,$data['password_original']);
                
            } 
            return $this->redirect('/index');
 }

2.郵箱工具類:
先在config裏的main.php添加組件:

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',//使用swiftmailer擴展  優點不佔用服務器資源內存
            'viewPath' => '@common/mail', //模板路徑
            'useFileTransport' => false,//如果啓用表示郵件發送到服務器並保存, 關閉時表示真實發送到用戶郵箱。。。
            'transport' => [
                'class' => 'Swift_SmtpTransport',  
                'host' => 'smtp.exmail.qq.com', //QQ企業郵箱 SSL啓用 端口:587/465 (其他郵箱配置請看下面提示:)
                'port' => 465,
                'encryption' => 'ssl',// (tls / ssl)根據情況選擇符合你的
                //用戶密碼放在這裏不太安全,可以放在數據庫裏然後去取
                'username' => '[email protected]',//寫自己的郵箱用戶名
                'password' => 'zzzzz',//密碼
            ],
            //發送的郵件信息配置
            'messageConfig' => [
                'charset' => 'utf-8',//編碼
                'from' => ['[email protected]' => 'uuu'],//uuu修改成自己的簽名 隨意
            ],
        ],

提示:

126郵箱:
POP3服務器地址:pop.126.com(端口:110)
SMTP服務器地址:smtp.126.com(端口:25)

139郵箱:
POP3服務器地址:POP.139.com(端口:110)
SMTP服務器地址:SMTP.139.com(端口:25)

163.com:
POP3服務器地址:pop.163.com(端口:110)
SMTP服務器地址:smtp.163.com(端口:25)

QQ郵箱:
POP3服務器地址:pop.qq.com(端口:110)
SMTP服務器地址:smtp.qq.com(端口:25)

yahoo.com:
POP3服務器地址:pop.mail.yahoo.com
SMTP服務器地址:smtp.mail.yahoo.com

gmail(google.com)
POP3服務器地址:pop.gmail.com(SSL啓用端口:995)
SMTP服務器地址:smtp.gmail.com(SSL啓用 端口:587)

3.工具類

namespace common\utils;
use Yii;

class Tool {

    /** 
     * 郵件發送 
     * @param type $to  郵件接收人多個傳數組
     * @param type $title   郵件標題
     * @param type $data 郵件內容(模板的時候最好使用數組)
     * @param type $template 郵件模板
     * @return int
     */
    static function sendMail($to, $title, $data,$template='') {
        $mail = !empty($template) ? 
                Yii::$app->mailer->compose($template,['data'=>$data]) ://這裏以usesign模板爲例
                Yii::$app->mailer->compose(); //加載原始配置
        
        $mail->setTo($to); //發送目標
        $mail->setSubject($title); //標題
       /* 
      *z這裏可以添加你的附件  
      *$message->attach('source/file.pdf');//附件圖片   內嵌圖片在模板中查看
        $message->attachContent('Attachment content', ['fileName' => 'attach.txt', 'contentType' => 'text/plain'])//附件文本文件 
      */ 
         //要發送的內容
        !empty($template)?$mail->setTextBody(''):$mail->setHtmlBody($data);
        if ($mail->send()) {
            return 1;
        } 
        return 0;
       
    }
       
} 

4:自定義郵箱模板:

<?php

use yii\helpers\Html;
?>
<div class="body">
    <div class="container">
  <div class="logo">
            <img height="20" src="xxxx">//內嵌圖片
        </div>
            <div class="panel-body">
                <p>
                    <?php echo $data['user_name'] ?>,您好!
                </p>
                <p>
                    賬號:
                    <code><?php echo $data['user_name'] ?></code>
                </p>
                <p>
                    密碼:
                    <code><?php echo $data['password_original'] ?></code>
                </p> 
            </div>
    </div>
</div>

5.短信通知:

5-1:
1.先去阿里雲註冊:

訪問阿里雲 官方網站,單擊頁面上的 免費註冊 按鈕。
按照屏幕提示完成註冊流程並進行實名認證,短信服務只支持實名認證用戶使用。爲了更好地使用阿里雲服務,建議儘快完成實名認證,否則部分阿里雲服務將無法使用。具體實名認證流程,請參考 這裏
步驟 2 獲取阿里雲訪問密鑰
爲了使用短信發送API-PHP SDK,您必須申請阿里雲的訪問密鑰。

阿里雲訪問祕鑰是阿里云爲用戶使用 API(非控制檯)來訪問其雲資源設計的“安全口令”。您可以用它來簽名 API 請求內容以通過服務端的安全驗證。

該訪問祕鑰成對(AccessKeyId 與 AccessKeySecret)生成和使用。每個阿里雲用戶可以創建多對訪問祕鑰,且可隨時啓用(Active)、禁用(Inactive)或者刪除已經生成的訪問祕鑰對。

您可以通過阿里雲控制檯的 祕鑰管理頁面 創建、管理所有的訪問祕鑰對,且保證它處於“啓用”狀態。由於訪問祕鑰是阿里雲對 API 請求進行安全驗證的關鍵因子,請妥善保管你的訪問祕鑰。如果某些祕鑰對出現泄漏風險,建議及時刪除該祕鑰對並生成新的替代祕鑰對。
重點:
爲了成功發送一條短信通知,您至少需要完成以下步驟

一、在控制檯完成短信簽名與短信模板的申請,獲得調用接口必備的參數
在“短信簽名”頁面完成簽名的申請,獲得短信簽名的字符串簽名申請手冊
在“短信模板”頁面完成模板的申請,獲得模板ID。模板申請手冊

配置請看阿里雲手冊 ,下載demo :
https://help.aliyun.com/document_detail/55451.html?spm=5176.11065259.1996646101.searchclickresult.515119bbVdZj1U&aly_as=JoXJ__qh

把demo下載好了解壓放在項目中,我這裏是放到了 common/utils/ 下面。

<?php

//阿里雲
ini_set("display_errors", "on");
require_once 'aliyun-dysms-php-sdk/api_sdk/vendor/autoload.php';
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;
// 加載區域結點配置
Config::load();
class SmsDemo
{ /**
     * 註冊賬號發送通知模板
     * @return stdClass
     */
    public static function sendMsgOnRegister($phoneNumber,$name,$username,$password) {
		
        // 初始化SendSmsRequest實例用於設置發送短信的參數
        $request = new SendSmsRequest();

        // 必填,設置短信接收號碼
        $request->setPhoneNumbers($phoneNumber);

        // 必填,設置簽名名稱,應嚴格按"簽名名稱"填寫,請參考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $request->setSignName("xxxx");

        // 必填,設置模板CODE,應嚴格按"模板CODE"填寫, 請參考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $request->setTemplateCode("yyyy");

	    // 可選,設置模板參數, 假如模板中存在變量需要替換則爲必填項
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "name"=>$name,
            "username"=>$username,
            "password"=>$password,
        ), JSON_UNESCAPED_UNICODE));

        // 可選,設置流水號
        $request->setOutId("55566");

        // 選填,上行短信擴展碼(擴展碼字段控制在7位或以下,無特殊需求用戶請忽略此字段)
        //$request->setSmsUpExtendCode("234567");

        // 發起訪問請求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);

        return $acsResponse;
    }

/**
 * 批量發送短信
 * 這裏我會持續更新   需要這個功能的話可以看官網 也可以聯繫我Q1694084708
 */
}

感覺博主寫的不錯,請小夥伴們轉載和分享點贊喲!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章