thinkphp 整合 phpmailer 實現郵件發送

發送郵件配置

// thinkphp config.php
// 配置郵件發送服務器
'MAIL_SMTP'     => TRUE,
'MAIL_HOST'     => 'smtp.yeah.net',
'MAIL_SMTPAUTH' => TRUE,
// 測試郵箱
'MAIL_USERNAME' => '[email protected]',
'MAIL_PASSWORD' => 'your-login-password/client-authorization-password',
'MAIL_SECURE'   => 'tls',
'MAIL_CHARSET'  => 'utf-8',
'MAIL_ISHTML'   => TRUE,

郵件配置需要注意的地方

// MAIL_PASSWORD 的配置值需要注意
// 我使用的是網易的郵箱來進行測試的
// 所以下面填寫的密碼不一定就是你的登錄郵箱的密碼
// 客戶端授權密碼-增強郵箱的安全性
// 因爲網易郵箱裏面有所謂的**客戶端授權密碼**
// 可能是你當時設置的另一個密碼
// 所以這邊是一個坑,我也被坑了好久才發現
// 爲什麼一直提示 SMTP connected failed smtp_connect_failed

thinkphp C快捷函數是不區分大小寫的

C('MAIL_PASSWORD')
// 都可以
C('mail_password')
// 使用的時候,最好前後一致
// 但是建議統一使用大寫方式
// 可以利用config首字母來記憶C()方法

thinkphp vendor function.php

ThinkPHP Vendor 目錄是專門用於存放非標準ThinkPHP的插件目錄,
如下圖:同時也需要注意這裏的文件夾和文件的名的大小寫,考慮到後面導入

這裏寫圖片描述

另外,在這裏,我在 thinkphp 架構裏面寫了一個
全局的函數:function.php,其位置如下圖所示

這裏寫圖片描述

注意這個 function.php 文件中的函數是可以在全局中使用的,
不需要先引入function.php文件,但是其位置和名稱都是定的,
Common/Common/function.php
<?php

/**
 * 發送郵件函數
 *
 * @param  string $to      收件人郵箱
 * @param  string $subject
 * @param  string $content 郵件內容
 * @return bool
 */
function send_mail($to, $subject, $content)
{
    vendor('PHPMailer.class#phpmailer');
    vendor('PHPMailer.class#smtp');

    $mail = new PHPMailer();
    var_dump($mail); // test

    // todo

}

引入phpmailer smtp需要注意的地方

// vendor('PHPMailer.class#PHPMailer');
// Class 'PHPMailer' not found 注意這裏面的大小寫
vendor('PHPMailer.class#phpmailer');
vendor('PHPMailer.class#smtp');
// 如果沒有這行代碼的話,那麼會提示 Class 'SMTP' not found
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章