我以前一直使用163郵箱發送須要處理的文件,可是若是操做過於頻繁【或者有別的問題】,會致使發送失敗,相反如今用QQ的貌似還沒出現過相似狀況,不過QQ郵箱配置和163有一丟丟不同,我仍是貼一下,怕朋友們踩到坑(建議你們用qq郵箱,建議你們用qq郵箱,建議你們用qq郵箱)重要的事情說三遍!!!php
1.下載PHPMailer,我這裏推薦你們使用composer安裝html
"require": { "phpmailer/phpmailer":"*" },
2.使用PHPMailer,我這裏先建立一個類去使用,直接上代碼:composer
use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\PHPMailer; class SendEmail { public function __construct($options) { try { $mail = new PHPMailer(); //New instance, with exceptions enabled $mail->CharSet='UTF-8'; //這是設置中文的編碼 $body = $options['body']; //發送的消息內容 $mail->IsSMTP(); // tell the class to use SMTP $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = $options['Port']; // set the SMTP server port $mail->Host = $options['Host']; // SMTP server 網易是smtp.163.com這個,QQ郵箱是smtp.qq.com $mail->Username = $options['Username']; // SMTP server username $mail->Password = $options['Password']; // SMTP server password $mail->AddReplyTo($options['ReplyEmail'], $options['ReplyEmailName']); //回覆地址 $mail->From = $options['From']; //發送方的郵箱地址 $mail->FromName = $options['FromName']; //發送方的郵箱名 $to = $options['to']; //接收方的郵件地址 $mail->AddAddress($to); $mail->Subject = $options['Subject']; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->WordWrap = 80; // set word wrap $mail->AddAttachment($options['AddAttachment']); //能夠添加附件 $mail->MsgHTML($body); $mail->Send(); } catch (Exception $e) { echo $e->errorMessage(); } } }
而後就在一個控制器上調用這個類就能夠了,繼續上代碼:ui
$options = [ 'Port' => 25, //網易是25端口,其實也不重要,qq照樣能用 'Host' => 'smtp.qq.com',//網易是這個,QQ郵箱是smtp.qq.com 'Username' => '********@qq.com', //發送郵件的賬號 'Password' => '********', //發送郵件賬號的客戶端受權碼 'ReplyEmail' => '********@163.com', //回覆郵件的郵箱地址 'ReplyEmailName' => '********', //回覆郵件的郵箱賬號 'From' => '********@qq.com', //發送郵件的郵箱賬號地址 'FromName' => '********', //發送郵件的郵箱賬號名稱 'to' => '********@qq.com', //發送郵件的郵箱賬號名稱 'Subject' => '********',//標題 'body' => '********', 'AddAttachment' => dirname($_SERVER["DOCUMENT_ROOT"]) . "/html/test.png" //這是添加附件的東西 ]; $sendmial = new SendEmail($options);
最後說幾個問題,Username的話,網易直接使用郵箱名便可,QQ郵箱請輸入郵箱前綴【用戶名】『eg.1214982635@qq.com
請輸入1214982635』 Password網易直接輸入郵箱密碼便可【有受權碼輸受權碼】,QQ請輸受權碼,發個短信就能生成
至此已經能夠發送郵件了,附上兩個郵箱互相發送成功的截圖編碼