1. 程式人生 > >PHPMailer傳送郵件

PHPMailer傳送郵件

  使用PHP發郵件,需要PHPMailer類庫,今天記錄下使用PHPMailer的一些使用方法。

使用環境
  0、版本不同,可能會導致解決方案行不通,故記錄使用環境。
  1、Apache/2.4.33 (Win64) PHP/5.6.35
  2、ThinkPHP5.0.21
  3、phpmailer 6.0

安裝dompdf
  1、使用命令列進入到專案根目錄

	cd C:\wamp64\www\tp5

  2、使用composer安裝phpmailer

	composer require phpmailer/phpmailer

  3、檢查是否安裝成功
  在C:\wamp64\www\tp5\vendor看是否有phpmailer資料夾

使用方法一

	//例項化PHPMailer
	$this->mail = new \PHPMailer();

	//是否啟用smtp的debug進行除錯,開發模式開啟
	$mail->SMTPDebug = 1;

	//使用smtp鑑權方式傳送郵件
    $mail->isSMTP();

    //使用鑑權方式,這裡必須是true
    $mail->SMTPAuth = true;

    //設定加密方式,這裡使用SSL
    $mail->SMTPSecure = 'ssl';

    //設定郵件伺服器地址,這裡使用QQ域名的郵箱伺服器
    $mail-
>Host = 'smtp.qq.com'; //設定郵箱伺服器埠 $mail->Port = 465; //設定登入郵箱賬號,你的郵箱 $mail->Username = '#############'; //設定授權碼,從郵箱裡面設定SMTP獲得 $mail->Password = '##############'; //設定傳送郵件郵箱資訊,和登入郵箱賬號一致 $mail->setFrom('#########', '傳送人'//設定接收郵件郵箱資訊,你要傳送的郵箱 $mail
->addAddress('##########'); //附件 $mail->addAttachment(ROOT_PATH.'/public/letters/test.pdf'); //郵件主題 $mail->Subject = '郵件主題'; //郵件內容 $mail->Body = '郵件內容';

使用方法二
  使用於tls方式、25埠,大致引數一樣,需要改變幾個關鍵的地方。

	$mail->SMTPOptions = array(
	    'ssl' => array(
	        'verify_peer' => false,
	        'verify_peer_name' => false,
	        'allow_self_signed' => true,
	    ));

	$mail->SMTPSecure = 'tls';

    $mail->Port = 25;

關於除錯
  開啟除錯

	$mail->SMTPDebug = 1;

  有時除錯只能看到比較大概的錯誤,要想看到詳細的錯誤就需要設定除錯等級,先來看原始碼註釋內容

  	 /**
     * Debug output level.
     * Options:
     * * self::DEBUG_OFF (`0`) No debug output, default
     * * self::DEBUG_CLIENT (`1`) Client commands
     * * self::DEBUG_SERVER (`2`) Client commands and server responses
     * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
     * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages
     * @var integer
     */

  可以大致看出每個等級顯示資訊內容:
    0 => 預設不開啟除錯輸出
    1 => 客戶端命令
    2 => 客戶端命令和伺服器反饋
    3 => 附加一些連線狀態
    4 => 底層資料輸出,所有資訊

  由此可見,如果還沒有找到想要的資訊,不妨設定到3 和 4看看。有具體的錯誤資訊,才能更快的解決問題。

相關擴充套件
  使用這個類庫需要開啟openssl,sockets,一般都預設開啟了。沒有開啟的,找到php.ini去掉以下兩行前面的分號,開啟擴充套件。

	extension=php_openssl.dll
	extension=php_sockets.dll

  訪問phpinfo(),檢查他們是否開啟。
在這裡插入圖片描述
在這裡插入圖片描述

結語
  1、整體上這個類庫坑不是很多,可能就是使用tls、25埠的時候有些坑。

  2、使用$mail->SMTPDebug除錯非常重要

  3、使用QQ郵箱伺服器傳送郵件,需要先去自己的郵箱設定STMP,並獲取授權碼。