本篇文章給大家介紹如何通過CakePHP內(nèi)置模塊發(fā)送郵件(Gmail),有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
效果
通過事先配置模塊,來實(shí)現(xiàn)發(fā)送郵件的功能。(此代碼無法根據(jù)用戶輸入信息來更改發(fā)送郵箱)
前提
閱讀者已有CakePHP的基礎(chǔ)知識
版本
CakePHP 3.6.1
PHP 7.4.10
準(zhǔn)備
<ProjectFolder>configapp.php里加入以下配置(記得替換郵箱信息)
'EmailTransport' => [ 'default' => [ 'className' => 'Smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'timeout' => 30, 'username' => 'name@gmail.com', 'password' => '12345678', 'tls' => true, 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), ], ], 'Email' => [ 'default' => [ 'transport' => 'default', 'from' => 'name@gamail.com', //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
去任意Controller.php里,寫發(fā)送郵件的函數(shù)。
*此處有參考stackoverflow
//在最上面加載模塊 use CakeMailerEmail; //在任意class下寫郵件發(fā)送的函數(shù) public function send() { $email = new Email('default'); try { $email->setFrom(['name@gmail.com' => 'My Site']) ->setTo('接受者郵箱@126.com') ->setSubject('主題') ->send('本文'); echo "success"; } catch (CakeNetworkExceptionSocketException $exception) { $lastResponse = $email->transport()->getLastResponse(); var_dump($lastResponse); } }
在<ProjectName>configroutes.php寫好路由
$routes->connect('/send', ['controller' => 'ControllerName', 'action' => 'send']);
訪問,測試
報錯,這是因?yàn)間mail的安全防護(hù)級別太高了。
登錄到自己的google賬號管理中心->安全性
關(guān)閉兩步驗(yàn)證
開啟訪問權(quán)限
然后刷新頁面,可以發(fā)現(xiàn)我們已經(jīng)成功通過gmail發(fā)送郵件了。
為了賬號安全,測試成功之后記得把安全防護(hù)級別調(diào)高。
推薦學(xué)習(xí):《PHP視頻教程》