ThinkPHP3.2使用PHPMailer傳送郵件
首先下載PHPMailer,直接在百度搜下,然後下載就好了。
接著註冊一個新浪郵箱,用作發件人郵箱。qq和163郵箱都不穩定,有時郵件發不出去。
解壓下載的檔案(如果是壓縮包),得到PHPMailer資料夾,資料夾下有以下檔案:
緊接著把這個資料夾放到ThinkPhp中的Library中的Vendor下,具體路徑為:專案資料夾\ThinkPHP\Library\Vendor\,
如圖:
到這裡,PHPMailer就算加入到Thinkphp3.2中了。
使用方法:
開啟Application\Common\Common\function.php(如果沒有這個檔案,則新建一個):
加入以下程式碼:
function sendMail($to){ //Vendor('PHPMailer.PHPMailerAutoload'); vendor('PHPMailer.class#PHPMailer'); vendor('PHPMailer.class#SMTP'); $mail = new PHPMailer(); //例項化 $mail->IsSMTP(); // 啟用SMTP $mail->Host=C('MAIL_HOST'); //smtp伺服器的名稱(這裡以新浪郵箱為例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //啟用smtp認證 $mail->Username = C('MAIL_USERNAME'); //發件人郵箱名,從config.php中獲得 $mail->Password = C('MAIL_PASSWORD') ; //發件人郵箱密碼 $mail->From = C('MAIL_FROM'); //發件人地址(也就是你的郵箱地址) $mail->FromName = C('MAIL_FROMNAME'); //發件人姓名 $mail->AddAddress($to,"尊敬的客戶"); $mail->WordWrap = 50; //設定每行字元長度 $mail->Port = 25; $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式郵件 $mail->CharSet=C('MAIL_CHARSET'); //設定郵件編碼 $mail->Subject ='helloworld'; //郵件主題 $mail->Body = 'This email is sent by PHPMailer!'; //郵件內容 $mail->AltBody = "這是一個純文字的身體在非營利的HTML電子郵件客戶端"; //郵件正文不支援HTML的備用顯示 $result = $mail->Send(); return $result; }
儲存並退出。
接著開啟Application\Common\Conf\config.php,加入以下程式碼:
<?php
return array(
'MAIL_HOST' =>'smtp.sina.com',//smtp伺服器的名稱,這裡用的是新浪郵箱,qq: smtp.qq.com , 163:smtp.163.com
'MAIL_SMTPAUTH' =>TRUE, //啟用smtp認證
'MAIL_USERNAME' =>'[email protected]',//發件人郵箱名,注意換成你註冊的新浪郵箱地址
'MAIL_FROM' =>' [email protected]',//發件人郵箱地址,注意換成你註冊的新浪郵箱地址
'MAIL_FROMNAME'=>'liujan',//發件人姓名
'MAIL_PASSWORD' =>'*****',//密碼,請填上發件人郵箱密碼
'MAIL_CHARSET' =>'utf-8',//設定郵件編碼
'MAIL_ISHTML' =>TRUE, // 是否HTML格式郵件
);
?>
儲存並退出。
接著開啟Home下的IndexController,
加入函式sendMail:
public function sendMail(){
$email = '[email protected]'; //收件人郵箱地址
sendMail($email);
}
儲存並退出。
在瀏覽器中輸入一下地址:
http://localhost/thinkphp/Home/Index/sendMail
如果你的收件人郵箱地址有效,並且發件人郵箱地址和密碼都正確的話,此時應該能正常傳送郵件。上你的收件郵箱看下吧。
如果要用phpmailer來發送註冊賬戶時的啟用郵箱,則可以在資料庫中給user表加上三個欄位,reg_time(註冊時間),status(0表示未啟用,1表示已啟用),verify_code(表示啟用碼)
然後使用者註冊時,以其輸入的使用者郵箱,密碼加上當前時間利用md5來生成一個啟用碼verify_code:
$data['verify_code'] = md5($data['user_email'].$data['user_pwd'].$data['reg_time']);
然後再向使用者輸入的傳送啟用連結。
接著把使用者輸入的資料,註冊時間,生成的啟用碼,寫入資料庫,注意status要為0
啟用連結的內容主要是剛才生成的啟用碼,和使用者點選啟用連結時的處理函式,
比如我的啟用連結樣例是:
然後把
我在Home模組下的UserController裡寫了一個函式active,主要用來判斷啟用連結中的啟用碼是否和資料庫中的一樣,如果一樣,則啟用賬戶,否則啟用失敗;並且該連結只在24小時內有效,該函式內容如下:
public function active(){
if (IS_GET){
$verify_code = I("verify_code");
$user = D("User");
$data = $user->where("verify_code='$verify_code'")->find(); //找出資料庫中verify_code和啟用連結中的verify_code相同的那條記錄
if (!empty($data)){
$user_id = $data['user_id'];
if ($data['status'] == 0){
$current_time = date("Y-m-d H:i:s", strtotime("-1 day")); //得到24小時前的時間
if ($data['reg_time'] < $current_time){ //判斷是否在24小時內
echo "您的啟用有效期已過,請重新註冊傳送啟用郵件";
$user->where("user_id='$user_id'")->delete();
return false;
}
else{
$data['status'] = 1; //啟用成功
if ($user->where("user_id='$user_id'")->save($data)){
return true;
}
else{
echo "啟用失敗,請重新註冊";
$user->where("user_id='$user_id'")->delete();
return false;
}
}
}
else{
return true;
}
}
else{
echo "啟用失敗,請重新註冊";
return false;
}
}
}
常見錯誤:
1. CLASS phpmailer not found:
解決方法:
進入Vendor中,開啟class.phpmailer.php檔案,將類名複製下,然後將class.phpmailer.php檔名中的phpmailer改成剛才複製的。同時在function.php檔案中的vendor中class#後面的類名phpmailer都
改成剛才複製的。
2. PHPMailer錯誤SMTP Error: Could not connect to SMTP host
解決辦法:
開啟Vendor下的class.smtp.php,找到$this->smtp_conn = @fsockopen($host,// the host of the server
然後改成$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);
開啟class.phpmailer.php,找到函式 IsSMTP(),把$this->Mailer = 'smtp' 改成 $this->Mailer = 'SMTP',
同時把572-579行的case 'smtp'改成case 'SMTP'
3. 出現$mail->send()返回值一直為1(true)的情況
解決方法:
請把class.phpmailer.php中第572-579行中的
case 'smtp'改成case 'SMTP'
出現無法通過驗證時,請把發件人的Username和From都設為你的郵箱(最好用新浪郵箱,qq和163有時會出現這種錯誤)
相關推薦
phpmailer thinkphp3.2傳送郵件
tp3.2 使用phpmailer傳送簡訊郵箱 準備工作 1.thinkphp3.2 2.qq郵箱(開通過POP3/SMTP服務)在qq郵箱內,設定-》賬戶-》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 3.phpmailer(沒
ThinkPHP3.2使用PHPMailer傳送郵件
首先下載PHPMailer,直接在百度搜下,然後下載就好了。 接著註冊一個新浪郵箱,用作發件人郵箱。qq和163郵箱都不穩定,有時郵件發不出去。 解壓下載的檔案(如果是壓縮包),得到PHPMailer資料夾,資料夾下有以下檔案: 緊接著把這個資料夾放到ThinkPhp中
javax.mail 傳送郵件(工具類)
前言:注意自己郵箱賬號的授權碼 傳送不成功,要設定授權碼(勿掉坑裡) 1.座標 <dependency> <groupId>javax.mail</groupId> <artifactId&
無後臺網站傳送郵件方法(formspree)
<!doctype html> <html> <head> <meta charset="utf-8"> <title>無後臺網站傳送郵件方法(formspree)開通黃金會員才能使用AJAX提交,否則只能使用form提交</titl
Linux系統使用mailx命令傳送郵件
一、環境核實以及準備。 在centos7系統中預設有安裝mailx命令進行系統郵件的傳送。如果沒有相關的命令可以自行通過yum安裝 #yum install mailx -y 使用#ss &nbs
telnet通過smtp傳送郵件
////////////////////////////////////CMD指令////////////////////////////////////////////// cmd telnet smtp.163.com 25 or &nb
註冊成功傳送郵件
前提:確認匯入了jar包:mail.jar *注:網易郵箱給網易郵箱發的較快。 MailUtils.java package com.pb.utils; import java.util.Properties; i
iOS 呼叫系統傳送郵件
第一步 匯入messageUI.framework框架 第二步 匯入標頭檔案 #import <MessageUI/MessageUI.h> 第三步 @property (nonatomic,strong) MFMailComposeViewCon
QQ 傳送郵件
之前也釋出過一篇QQ發郵件的,後來那種方法在阿里雲伺服器中報錯了,查了好久才發現,是阿里雲的伺服器把 25 埠 給封殺了。現在重新做了個功能。 public static string UserName = ""; public static string UserPas
織夢會員註冊郵箱驗證傳送郵件配置教程
環境要求 主機465埠是開啟和放行的 php擴充套件openssl是開啟的 php擴充套件sockets是開啟的 1、QQ郵箱 或者 163郵箱 126郵箱 開啟SMTP服務,拿到授權碼,根據自己的來 QQ郵箱開啟SMTP服務 和 獲取授權碼 163郵箱開啟SM
python傳送郵件給多人
親測,163郵箱不能傳送,我用的qq的 import smtplib from email.mime.text import MIMEText sender = '[email protected]' passwd = '****' receiver = ["[email
codeigniter 傳送郵件
在 Codeigniter 的類庫參考中封裝好了 Email 類,使用時只需要載入呼叫即可. 我簡單封裝了一個傳送 email 的方法 custom_mail_smtp,程式碼如下 /** * smtp 傳送郵件 */ if (!function_exists("
通過javamailsenderimpl傳送郵件
參考文章:http://blog.csdn.net/qq_33556185/article/details/51028952 import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.anno
阿里雲伺服器用SMTP的25號埠傳送郵件問題
這幾天自己閒著沒事就用阿里雲伺服器部署了一個專案,這個專案中包含了一個傳送郵件到我的郵箱的功能出錯了,這個功能在我的電腦上用本地伺服器沒有問題,但是部署到阿里雲的Centos伺服器上這個功能出了問題,阿里雲伺服器傳送郵件是報出超時的錯誤: 主要原因如下: 我的傳送郵件功能是用傳統
java利用commons-email.jar傳送郵件
這幾天寫了一個簡歷網站,因為簡歷下面有個聯絡我的功能,這個功能可以可以向郵箱傳送郵件,所以自己便開始學習部落格開始解決傳送郵件功能。 引入相關jar包 要用commos-email.jar實現傳送郵箱功能需要先匯入三個jar包: commos-email.jar
golang 使用 gomail 傳送郵件
下面以阿里雲郵箱為例, 如果使用的是qq郵箱的話需要把mailConn裡面的host改成'smpt.qq.com',user 填寫qq郵箱地址, pass需要填寫你在qq郵箱設定裡面獲取到的授權碼,qq郵箱需要先去郵箱設定裡面開通smtp支援,然後獲取授權碼。然後就可以用qq郵箱傳送了。 安裝gomail
【SSH網上商城專案實戰25】使用java email給使用者傳送郵件
當用戶購買完商品後,我們應該向使用者傳送一封郵件,告訴他訂單已生成之類的資訊,郵箱地址是從使用者的基本資訊中獲取,好了,首先我們來看一下java中傳送郵件的方法。
iOS12系統應用開發傳送郵件
iOS12系統應用開發傳送郵件 訊息分享是應用社交化和營銷的重要途徑。除了開發者自己搭建專有的訊息分享渠道之外,還可以藉助系統自帶的各種途徑。iOS提供了3種快速分享訊息的方式,分別為傳送郵件、傳送簡訊以及資料分享等。本章將講解這三種方式。 傳送郵件 郵件是一種更為靈活的資料分享方式。它可以幫助使用者將
java傳送郵件例項
JavaMail傳送郵件到qq郵箱:前提是QQ郵箱裡帳號設定要開啟POP3/SMTP協議,步驟如下: 1. 登陸你的QQ即可,找到QQ郵箱圖示。 2.進入郵箱後後點選設定。 3.找到賬戶。 4.往下拉將POP3/SMTP開啟。&nb
使用阿里雲郵箱傳送郵件
程式碼部分 /** * 傳送郵件 (阿里雲郵箱企業版) * * @param fromEmail * 傳送郵箱 * @param toEmail * 接收郵箱 * @pa