日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP門面模式實現簡單的郵件發送示例

瀏覽:58日期:2022-06-14 11:00:28
目錄前言:舉例:涉及:編碼:環境要求:前言:

門面模式屬于設計模式中三大分類之一的結構類型,也叫外觀模式。其作用對客戶端低耦合底層功能的封裝,客戶端不用知道子系統間的調用。

舉例:

門面模式就相當于電腦主機,用戶要打開某個應用程序,只需要知道兩步。打開開機按鈕,電腦開機后再打開應用。開機按鈕就相當于一個門面,里面的開機需要調用不同的模塊,比如硬件自檢,選擇啟動盤,加載引導,加載內核,OS初始化,啟動指定級任務等,以下也通過發郵件的例子描述門面一模式。

涉及:call_user_func函數的使用異常類的自定義處理類的分層封裝發郵件功能的實現與配置 編碼:必須先composer require phpmailer/phpmailer安裝依賴庫。創建擴展類目錄,里面包括獨立的配置文件,門面角色類,郵件功能類,校驗類,異常類。

3. 獨立的配置類,包括smtp服務地址,端口,中轉郵箱賬號,授權碼,郵件發送者昵稱(唯一標識)。

<?php/** * @Notes: 郵箱SMTP服務配置 * @Interface getCondition * @Return mixed * @Author: bqs * @Time: 2020/8/31 10:15 */return [ 'smtp_server' => 'smtp.qq.com', // QQ郵箱開啟的smtp 'smtp_port' => 465, // QQsmtp服務端口 'smtp_user' => '2652364582@qq.com', // 北橋蘇郵箱 'smtp_pwd' => 'ynxdedefduuhecbj', // SMTP服務開啟后授權碼 'email_id' => '酷D' // 郵件發送者的唯一標識(自定義的昵稱)];門面角色類,也就是客戶直接調用的,只有一個發送方法,但是該方法需要調用校驗和實際發送的方法實現。<?php/** * @Notes: 郵件門面 * @Interface getCondition * @Return mixed * @Author: bqs * @Time: 2020/8/31 13:10 */namespace mail;use think\Container;use mail\facade\MailException;use mail\facade\Mail;use mail\facade\Validate;class MailFacade{ protected $error; public static function __callStatic($method, $params) {//return (new static)->{$method}(...$params);return call_user_func([new MailFacade(),$method],$params); } /** * @Notes: 面向客戶的郵件發送調用 * @Author: bqs * @Time: 2020/8/31 13:33 * @Interface send * @param $params * @Return boolean 成功|失敗 */ private function send($params) {// 校驗參數$validate = Validate::make(__FUNCTION__);$res = $validate->check($params);if (!$res) { // 拋出自定義異常 throw new MailException($validate->getError(),422); return false;}// 發送郵件$mail = new Mail();$res = $mail->send($params);return $res; }}自定義異常類,可以在門面角色中以該類拋出,然后在客戶調用中以該類捕捉,以下自定義了錯誤消息的輸出。<?php/** * @Notes: 郵件發送校驗器 * @Interface getCondition * @Return mixed * @Author: bqs * @Time: 2020/8/31 13:03 */namespace mail\facade;class MailException extends \Exception{ public function errorMessage() {return 'mail error: '.$this->getMessage(); }}

校驗器,主要判斷客戶調用傳入的參數。

<?php/** * @Notes: 郵件發送校驗器 * @Interface getCondition * @Return mixed * @Author: bqs * @Time: 2020/8/31 13:03 */namespace mail\facade;class Validate{ protected $error; protected $type;// 方法名 public function __construct($type) { $this->type = $type; } // 創建驗證器對象 public static function make($type) { return new self($type); } // 與實際傳入的參數做校驗 public function check($params = []) { if (empty($params)) { $this->error = '參數不足,非法請求'; } $this->error = call_user_func([new self($this->type),$this->type],$params); return $this->error ? false : true; } // 發送參數校驗 public function send($params) { $res = ''; // 郵件 if (!isset($params[0]) || empty($params[0])) { return '郵箱不能為空'; } $email = []; if (is_array($params[0])) { $email = $params[0]; }else { $email[0] = $params[0]; } foreach ($email as $key => $val) { if (!preg_match('/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/',$val)) { return '郵箱格式不正確'; } } // 郵件標題 if (!isset($params[1]) || !$params[1]) { return '郵件標題不能為空'; } if (!isset($params[2]) || !$params[2]) { return '郵件內容不能為空'; } return $res; } // 獲取錯誤信息 public function getError() { return $this->error; }}實際的郵件發送,需要使用phpmail庫。<?php/** * @Notes: 郵件實際發送 * @Interface getCondition * @Return mixed * @Author: bqs * @Time: 2020/8/31 13:03 */namespace mail\facade;use PHPMailer\PHPMailer\PHPMailer;class Mail{ protected $config = []; public function __construct() {$this->config = include(dirname(__DIR__) . '../config/mail_config.php'); } /** * @Notes: 發郵件 * @Author: bqs * @Time: 2020/8/31 13:07 * @Interface send * @Return mixed */ public function send($params) {$to = $params[0]; // 接收者$subject = $params[1]; // 郵件標題$content = $params[2]; // 郵件內容$emails = new PHPMailer();$emails->CharSet = 'UTF-8'; //設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼$emails->isSMTP();//Enable SMTP debugging// 0 = off (for production use)// 1 = client messages// 2 = client and server messages$emails->SMTPDebug = 0;//調試輸出格式//$emails->Debugoutput = 'html';//smtp服務器$emails->Host = $this->config['smtp_server'];//端口 - likely to be 25, 465 or 587$emails->Port = $this->config['smtp_port'];if ($emails->Port === 465) $emails->SMTPSecure = 'ssl';// 使用安全協議//Whether to use SMTP authentication$emails->SMTPAuth = true;//發送郵箱$emails->Username = $this->config['smtp_user'];//密碼$emails->Password = $this->config['smtp_pwd'];//Set who the message is to be sent from$emails->setFrom($this->config['smtp_user'], $this->config['email_id']);//回復地址//$emails->addReplyTo('replyto@example.com', 'First Last');// 接收郵件方if (is_array($to)) { foreach ($to as $v) {$emails->addAddress($v); }} else { $emails->addAddress($to);}$emails->isHTML(true);// send as HTML//標題$emails->Subject = $subject;//HTML內容轉換$emails->msgHTML($content);//Replace the plain text body with one created manually//$emails->AltBody = 'This is a plain-text message body';//添加附件//$emails->addAttachment('images/phpmailer_mini.png');//send the message, check for errorsreturn $emails->send(); }}客戶調用部分。public function sendMail() {try { $res = \mail\MailFacade::send(['1641181271@qq.com'], '測試標題', '測試內容'); var_dump($res); die;} catch (MailException $e) {// 捕捉自定義異常類拋出 var_dump($e->errorMessage()); die;} catch (\Exception $e) { var_dump($e->getMessage()); die;} }返回true后查看郵件是否接收。 環境要求:

實現郵件發送是需要特定的環境和相關的配置才能實現,以下就以實現成功發送補充的操作。

第一步:打開網址下載PHPMailer,PHPMailer 需要 PHP 的 sockets 擴展支持,而登錄 QQ 郵箱 SMTP 服務器則必須通過 SSL 加密的, PHP 還得包含 openssl 的支持。

第二步:使用 phpinfo() 函數查看 socket 和 openssl 擴展信息(wamp server 默認啟用了該擴展)。openssl 如果沒有開啟請打開php.ini文件進行開啟首先檢查php.ini中;extension=php_openssl.dll是否存在, 如果存在的話去掉前面的注釋符‘;’, 如果不存在這行,那么添加extension=php_openssl.dll。

PHPMailer 核心文件

第三步:**QQ 郵箱設置所有的主流郵箱都支持 SMTP 協議,但并非所有郵箱都默認開啟,您可以在郵箱的設置里面手動開啟。第三方服務在提供了賬號和密碼之后就可以登錄 SMTP 服務器,通過它來控制郵件的中轉方式。

第四步:開啟 SMTP 服務

選擇 IMAP/SMTP 服務,點擊開啟服務 第五步:驗證密保

發送短信“配置郵件客戶端”至1069-0700-69 第六步:獲取授權碼

SMTP 服務器認證密碼,也就是授權碼,使用的時候沒有空格,需要妥善保管。

以上就是PHP門面模式實現簡單的郵件發送示例的詳細內容,更多關于PHP門面模式發送郵件的資料請關注好吧啦網其它相關文章!

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲韩日在线| 激情欧美一区二区三区| 久久久精品五月天| 国产精品mv在线观看| 国产偷自视频区视频一区二区| 中文字幕一区久| 亚洲va中文在线播放免费| 精品午夜av| 日韩毛片在线| 色婷婷精品视频| 免费人成在线不卡| 自拍自偷一区二区三区| 97久久亚洲| 国产福利91精品一区二区| 日韩在线观看| 亚洲主播在线| 国产精品v亚洲精品v日韩精品 | 欧美专区18| 久久精品 人人爱| 乱一区二区av| 亚洲作爱视频| 秋霞国产精品| 国产欧美日韩在线一区二区| 午夜精品久久久久久久久久蜜桃| 欧美日韩第一| 国产美女高潮在线观看| 成人免费电影网址| 国产精品毛片久久| 日韩精品免费视频一区二区三区| 亚洲综合三区| 亚洲综合日韩| 国产日韩欧美一区二区三区| 老司机免费视频一区二区三区| 国户精品久久久久久久久久久不卡| 在线天堂资源www在线污| 91福利精品在线观看| 亚洲日本网址| 亚洲最新av| 亚洲精品一级二级| 国产一区一一区高清不卡| 水野朝阳av一区二区三区| 免费人成网站在线观看欧美高清| 精品视频国内| 亚洲免费毛片| 香蕉久久久久久| 国产精品啊啊啊| 日韩精品久久久久久| 欧美日韩一区二区三区视频播放| 亚洲精品1区| 四虎4545www国产精品| 91亚洲国产成人久久精品| 国产精品伦一区二区| 岛国av免费在线观看| 精品中文字幕一区二区三区| 精品91久久久久| 中文字幕一区二区精品区| 日韩精品免费观看视频| 久久精品免费一区二区三区| 亚洲伊人av| 日韩欧美二区| 成人午夜网址| 欧美va亚洲va日韩∨a综合色| 美女亚洲一区| 久久精品超碰| 神马久久午夜| 国产精品试看| 亚洲网址在线观看| 四虎在线精品| 亚洲激情国产| 亚洲精品综合| 国产精品v一区二区三区| 久久天堂精品| 日韩国产综合| 久久青青视频| 欧美日韩国产欧| 亚洲精品九九| 日本va欧美va精品发布| 麻豆成人91精品二区三区| 国产免费久久| 久久精品国产99久久| 欧美另类中文字幕| 国产一区二区三区不卡av | 欧美成人基地| 在线观看一区| 综合国产精品| 99精品在线观看| 日韩精品看片| 福利精品在线| 日韩视频一区| 久久精品国产99国产| 亚洲视频国产精品| 亚州av乱码久久精品蜜桃| 热三久草你在线| 欧美aaaaaa午夜精品| 综合国产精品| 久久狠狠久久| 99久久亚洲精品蜜臀| sm捆绑调教国产免费网站在线观看| 亚洲精品系列| 成人啊v在线| 水蜜桃精品av一区二区| 久久精品国产成人一区二区三区 | 视频一区国产视频| 国产一区调教| 一区二区不卡| 午夜日韩福利| 欧美天堂一区| 麻豆精品av| 日韩一区二区三免费高清在线观看 | 午夜欧美巨大性欧美巨大| 久久亚洲影院| 日韩成人免费| 欧美日韩一区二区综合| 四虎国产精品免费观看| 国产精品chinese| 免费久久精品视频| 日韩免费精品| 国产字幕视频一区二区| 国产精品社区| 不卡中文字幕| 欧美 日韩 国产一区二区在线视频 | 欧美亚洲tv| 精品国产欧美| 亚洲国产影院| 蜜臀av一区二区在线免费观看| 亚洲欧美网站| 麻豆国产精品| 亚洲经典在线| 国产高清亚洲| 99视频精品| 日韩成人高清| 日韩区一区二| 在线日韩欧美| 国产高潮在线| 青青国产91久久久久久| 精品午夜视频| 亚洲日本在线观看视频| 精品美女在线视频| 日韩高清不卡一区| 日韩免费福利视频| 国产精品久久久久av蜜臀| 日本va欧美va欧美va精品| 国产精品普通话对白| 免费在线观看不卡| 国产精品探花在线观看| 少妇精品久久久一区二区三区| 成人免费网站www网站高清| 日韩精品亚洲专区| 国产欧美日韩| 国产一区二区三区四区二区| 亚洲3区在线| 免费成人av在线播放| 国产精品v亚洲精品v日韩精品| 久久uomeier| 免费观看日韩电影| 99精品综合| 欧美日韩亚洲一区在线观看| 亚洲精品成人一区| 国产精品日本| 亚洲精品少妇| 欧美天堂视频| 国产丝袜一区| 成人国产精品一区二区网站| 国产精品欧美大片| 国产欧美一区二区三区精品观看 | 91久久国产| 亚洲综合日本| 亚洲精品一二三**| 欧美国产另类| 九九久久婷婷| 日韩福利在线观看| 亚洲中字黄色| 欧美亚洲国产精品久久| 亚洲aⅴ网站| 国产欧美一区二区精品久久久 | 免费污视频在线一区| 婷婷激情一区| 欧美激情另类| 日韩一区二区三区在线看| 国产精品日韩| 亚洲精品小说| 亚洲欧美视频| 久久亚洲国产| 婷婷久久一区| 激情亚洲影院在线观看| 亚洲激情偷拍| 一二三区精品| 91精品一区国产高清在线gif| 影音先锋久久| 黄色不卡一区| 日韩一区二区三区精品视频第3页| 日韩手机在线| 欧美女激情福利| 红桃视频欧美| 日本不卡视频在线观看 | 美女久久久久| 欧美久久精品| 日本欧美不卡| 国产欧美在线| 久久午夜视频|