PHP的郵箱發送

來源:互聯網
上載者:User
這篇文章主要介紹了關於PHP的郵箱發送,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

項目中,使用者修改密碼,需要發送驗證碼到使用者郵箱,於是就看了看,在此記錄一下。

1、開啟SMTP服務

測試用的是自己的qq郵箱,首先需要開啟郵箱的SMTP服務,開啟之後,要記得給你的授權碼,授權碼一定要是最新的,我的已經開啟啦,授權碼也偷偷地背會了。

2、安裝phpmailer

使用composer,項目目錄下運行

composer require phpmailer/phpmailer

執行之後可以在vendor目錄下看到phpmailer目錄,這是一個用於寄送電子郵件的php函數包,很方便。

3、發送郵件函數

1 /** 2  * 發送郵件方法 3  * @param string $to:接收者郵箱地址 4  * @param string $title:郵件的標題 5  * @param string $content:郵件內容 6  * @return boolean  true:發送成功 false:發送失敗 7  */ 8 function sendMail($to,$title,$content){ 9     10     11     //執行個體化PHPMailer核心類12     $mail = new \PHPMailer();13     //是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 預設關閉debug偵錯模式14     $mail->SMTPDebug = 1;15     //使用smtp鑒權方式發送郵件16     $mail->isSMTP();17     //smtp需要鑒權 這個必須是true18     $mail->SMTPAuth=true;19     //連結qq網域名稱郵箱的伺服器位址20     $mail->Host = 'smtp.qq.com';21     //設定使用ssl加密方式登入鑒權22     $mail->SMTPSecure = 'ssl';23     //設定ssl串連smtp伺服器的遠程伺服器連接埠號碼,以前的預設是25,但是現在新的好像已經不可用了 可選465或58724     $mail->Port = 465;25     //設定smtp的helo訊息頭 這個可有可無 內容任意26     $mail->Helo = 'Hello smtp.qq.com Server';27     //設定寄件者的主機域 可有可無 預設為localhost 內容任意,建議使用你的網域名稱28     $mail->Hostname = 'localhost';29     //設定發送的郵件的編碼 可選GB2312 我喜歡utf-8 據說utf8在某些用戶端收信下會亂碼30     $mail->CharSet = 'UTF-8';31     //設定寄件者姓名(暱稱) 任意內容,顯示在收件者郵件的寄件者郵箱地址前的寄件者姓名32     $mail->FromName = '天下第一帥';33     //smtp登入的帳號 這裡填入字串格式的qq號即可34     $mail->Username ='';35     //smtp登入的密碼 使用產生的授權碼 你的最新的授權碼36     $mail->Password = '';37     //設定寄件者郵箱地址 這裡填入上述提到的“寄件者郵箱”38     $mail->From = '';39     //郵件內文是否為html編碼 注意此處是一個方法 不再是屬性 true或false40     $mail->isHTML(true);41     //設定收件者郵箱地址 該方法有兩個參數 第一個參數為收件者郵箱地址 第二參數為給該地址設定的暱稱 不同的郵箱系統會自動進行處理變動 這裡第二個參數的意義不大42     $mail->addAddress($to,'測試通知');43     //添加多個收件者 則多次調用方法即可44     // $mail->addAddress('xxx@qq.com','lsgo線上通知');45     //添加該郵件的主題46     $mail->Subject = $title;47     //添加郵件內文 上方將isHTML設定成了true,則可以是完整的html字串 如:使用file_get_contents函數讀取本地的html檔案48     $mail->Body = $content;49 50     //為該郵件添加附件 該方法也有兩個參數 第一個參數為附件存放的目錄(相對目錄、或絕對目錄均可) 第二參數為在郵件附件中該附件的名稱51     // $mail->addAttachment('./d.jpg','mm.jpg');52     //同樣該方法可以多次調用 上傳多個附件53     // $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');54 55     $status = $mail->send();56 57     //簡單的判斷與提示資訊58     if($status) {59         return true;60     }else{61         return false;62     }63 }

4、測試效果

控制器中,寫一個方法測試函數是不是好使。


1  public function test(){2         sendMail('email address','郵件的標題','發送成功');3     }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.