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