一、從網上下載PHPEmailer;php
二、確保PHP環境支持sockets擴展,還要開啓openssl,以下圖:html
三、配置QQ郵箱安全
1.開啓SMTP服務socket
2.驗證密保tcp
3.獲取受權碼(這個就是IMAP/SMTP的密碼)函數
四、發送郵件,代碼以下測試
<?php /** * Created by PhpStorm. * User: 黎志明 * Date: 2018/6/20 * Time: 17:53 */ header("content-type:text/html;charset=utf-8"); ini_set("magic_quotes_runtime", 0); require 'class.phpmailer.php'; try { $mail = new PHPMailer(true); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; // 設置郵件的字符編碼,這很重要,否則中文亂碼 $mail->SMTPAuth = true; //開啓認證 $mail->SMTPSecure = 'ssl'; // 使用安全協議 $mail->Port = 465; $mail->Host = "smtp.qq.com"; $mail->Username = "xxxxxx@qq.com"; $mail->Password = "xxxxx"; $mail->AddReplyTo("769111968@qq.com", "Timothy");//回覆地址 $mail->From = "xxxxx@qq.com"; $mail->FromName = "xxxxx"; $to = "xxxxx@qq.com"; $mail->AddAddress($to); $mail->Subject = "phpmailer測試標題"; $mail->Body = "<h1>演示</h1>這是演示內容"; $mail->AltBody = "當郵件不支持html時備用顯示"; // 當郵件不支持html時備用顯示,能夠省略 $mail->WordWrap = 80; // 設置每行字符串的長度 //$mail->AddAttachment("c:/1.jpg"); // 添加附件 $mail->IsHTML(true); $mail->Send(); echo '郵件發送成功'; } catch (phpmailerException $e) { echo "郵件發送失敗:" . $e->errorMessage(); }
五、遇到的問題:SMTP Error: Could not authenticate.ui
解決辦法網上絕大多數都是一下幾個(可能真的有效,但我遇到的就不能解決了)this
1.按下面的來修改;編碼
function IsSMTP() { $this->Mailer = 'smtp'; }改成 function IsSMTP() { $this->Mailer = 'SMTP'; }
2.將fsockopen函數替換成pfsockopen函數;
3.使用stream_socket_client函數,代碼以下:
$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);
以上的辦法都試過,仍是不能解決個人問題,而後我就懷疑是端口的問題,原來我用的端口是25,後來改爲了465就解決了,這是因爲使用了SSL,端口號要變成465