PHP發送郵件需要開啟下面幾個服務:
SMTP:簡單郵件傳輸協議,用來發送郵件
POP3:簡單的郵件訪問協議,單向的,本地對郵件的操作不會同步到郵件服務器,用來接收郵件
IMAP:是一種比POP3更復雜的郵件訪問協議,是雙向的,本地對郵箱的操作會同步到郵箱服務器,用來接收郵件
發送之前需要擁有自己的郵件服務器,測驗的時候其實用自己申請的免費郵箱就行,不需要自己搭建服務器了,可能要配置郵箱的SMTP服務,大部分公共郵箱(163、qq等)為了安全默認是關閉的,需要手動開啟,
網易郵箱配置

QQ郵箱配置

基本的介紹完之后,開始說怎么用(以QQ郵箱為例),
一、開啟服務
登陸QQ郵箱,頂部有設定按鈕,點擊賬戶,拉到最后,開啟第一行的 POP3/SMTP 服務,開啟之后會有一串密碼,復制下來一會要用,


二、下載安裝PHPMailer
1、從 github 上下載: https://github.com/PHPMailer/PHPMailer/
2、使用 composer 安裝:
composer require phpmailer/phpmailer
如果只是發送郵件,只留phpmailer.php和smtp.php就行,在vendor檔案夾下新建phpmailer檔案夾,把下載的檔案放到這個檔案夾下,打開composer.json檔案,在autoload下加入一行代碼 phpmailer 是命名空間名,vendor/phpmailer是對應的檔案名
"autoload": { "psr-4": { "app\\": "application", "phpmailer\\": "vendor/phpmailer" } },

分別打開PHPMailer.php和SMTP.php,修改其命名空間,為 “ namespace phpmailer; ”,兩個檔案都要修改,要不然會找不到檔案

打開cmd,進入到專案根目錄,使用composer命令加載第三方類別庫,執行composer dump-autoload
三、控制器代碼
<?php namespace app\index\controller; use think\Controller; use phpmailer\PHPMailer; use phpmailer\Exception; class Sendmail extends Controller { // public function index() { $toemail = '*****@126.com'; //這里寫的是收件人的郵箱 $mail=new Phpmailer(); $mail->isSMTP(); // 使用SMTP服務(發送郵件的服務) $mail->CharSet = "utf8"; // 編碼格式為utf8,不設定編碼的話,中文會出現亂碼 $mail->Host = "smtp.qq.com"; // 發送方的SMTP服務器地址 $mail->SMTPAuth = true; // 是否使用身份驗證 $mail->Username = "12*****[email protected]"; // 申請了smtp服務的郵箱名(自己的郵箱名) $mail->Password = "hcstaffeplbcjgii"; // 發送方的郵箱密碼,不是登錄密碼,是qq的第三方授權登錄碼,要自己去開啟(之前叫你保存的那個密碼) $mail->SMTPSecure = "ssl"; // 使用ssl協議方式, $mail->Port = 465; // QQ郵箱的ssl協議方式埠號是465/587 $mail->setFrom("12*****[email protected]","測驗發件人"); // 設定發件人資訊,如郵件格式說明中的發件人, $mail->addAddress($toemail,'測驗收件人'); // 設定收件人資訊,如郵件格式說明中的收件人 $mail->addReplyTo("12*****[email protected]","Reply"); // 設定回復人資訊,指的是收件人收到郵件后,如果要回復,回復郵件將發送到的郵箱地址 //$mail->addCC("[email protected]"); // 設定郵件抄送人,可以只寫地址,上述的設定也可以只寫地址(這個人也能收到郵件) //$mail->addBCC("[email protected]"); // 設定秘密抄送人(這個人也能收到郵件) //$mail->addAttachment("bug0.jpg"); // 添加附件 $mail->Subject = "這是一個測驗郵件"; // 郵件標題 $mail->Body = '<h1>這里是郵件內容</h1>' . date('Y-m-d H:i:s');// 郵件正文 //$mail->AltBody = "This is the plain text純文本";// 這個是設定純文本方式顯示的正文內容,如果不支持Html方式,就會用到這個,基本無用** if(!$mail->send()){ // 發送郵件 echo "Message could not be sent."; echo "Mailer Error: ".$mail->ErrorInfo; // 輸出錯誤資訊 }else{ echo ''; return '發送成功'; } } }
四、運行
sendmail.bat
@echo off start http://網址/sendmail.php exit
五、運行結果
發件人郵箱

收件人郵箱

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/65134.html
標籤:PHP
上一篇:PHP正則運算式
下一篇:Python--socket
