Thinkphp 使用gmail發送郵件

1.Thinkphp 發送郵件內容來自:http://www.thinkphp.cn/code/32.htmlphp

/**
 * 系統郵件發送函數
 * @param string $to    接收郵件者郵箱
 * @param string $name  接收郵件者名稱
 * @param string $subject 郵件主題 
 * @param string $body    郵件內容
 * @param string $attachment 附件列表
 * @return boolean 
 */
function think_send_mail($to, $name, $subject = '', $body = '', $attachment = null){
    $config = C('THINK_EMAIL');
    vendor('PHPMailer.class#phpmailer'); //從PHPMailer目錄導class.phpmailer.php類文件
    $mail             = new PHPMailer(); //PHPMailer對象
    $mail->CharSet    = 'UTF-8'; //設定郵件編碼,默認ISO-8859-1,若是發中文此項必須設置,不然亂碼
    $mail->IsSMTP();  // 設定使用SMTP服務
    $mail->SMTPDebug  = 0;                     // 關閉SMTP調試功能
                                               // 1 = errors and messages
                                               // 2 = messages only
    $mail->SMTPAuth   = true;                  // 啓用 SMTP 驗證功能
    $mail->SMTPSecure = 'ssl';                 // 使用安全協議
    $mail->Host       = $config['SMTP_HOST'];  // SMTP 服務器
    $mail->Port       = $config['SMTP_PORT'];  // SMTP服務器的端口號
    $mail->Username   = $config['SMTP_USER'];  // SMTP服務器用戶名
    $mail->Password   = $config['SMTP_PASS'];  // SMTP服務器密碼
    $mail->SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);
    $replyEmail       = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];
    $replyName        = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];
    $mail->AddReplyTo($replyEmail, $replyName);
    $mail->Subject    = $subject;
    $mail->MsgHTML($body);
    $mail->AddAddress($to, $name);
    if(is_array($attachment)){ // 添加附件
        foreach ($attachment as $file){
            is_file($file) && $mail->AddAttachment($file);
        }
    }
    return $mail->Send() ? true : $mail->ErrorInfo;
}

此函數只能在ThinkPHP中使用且須要phpmailer擴展的支持;
phpmailer擴展的放置目錄爲 ThinkPHP/Extend/Vendor/PHPMailer/class.phpmailer.php
phpmail的下載地址:
http://sourceforge.net/projects/phpmailer/files/html

而後下載 Download PHPMailer_v5.1.zip (111.7 kB)
使用此函數 必須在項目中加入如下配置項thinkphp

//郵件配置
'THINK_EMAIL' => array(
    'SMTP_HOST'   => 'smtp.aaa.com', //SMTP服務器
    'SMTP_PORT'   => '465', //SMTP服務器端口
    'SMTP_USER'   => 'mail@aaa.com', //SMTP服務器用戶名
    'SMTP_PASS'   => 'password', //SMTP服務器密碼
    'FROM_EMAIL'  => 'mail@aaa.com', //發件人EMAIL
    'FROM_NAME'   => 'ThinkPHP', //發件人名稱
    'REPLY_EMAIL' => '', //回覆EMAIL(留空則爲發件人EMAIL)
    'REPLY_NAME'  => '', //回覆名稱(留空則爲發件人名稱)
),

2.發送郵件更簡單版,具體來自內容請參考 ThinkPHP 中使用 PHPMailer 發送郵件(支持16三、QQ郵箱,附下載)安全

3.解決smtp server connect failed(鏈接smtp服務器失敗)服務器

Using WampServer 2.2 I just edit php.ini in C:\wamp\bin\php\php5.3.13 then uncommentextension=php_openssl.dllsocket

(使用的是wamp集成環境,因此要到具體的目錄下面看php.ini中函數

;extension=php_openssl.dll

前面的分號是否去除了),xampp的也是修改php.ini文件post

解決smtp服務器鏈接不上編碼

  • 添加 C:\PHP\ext 到系統變量中,具體根據你php安裝路徑爲準
  • 將 php 根目錄下的 libeay32.dll,ssleay32.dll 兩個文件 複製到 C:\WINDOWS\system32 中
  • 重啓服務器

參考了:Socket transport 「ssl」 in PHP not enabledurl

相關文章
相關標籤/搜索