使用PHP發送email進行賬號激活或者密碼修改操作


 使用PHPMailer編寫發送郵件

  PHPMailer需PHP的socket擴展支持,而PHPMailer鏈接qq域名郵箱時需要ssl加密方式(qq郵箱最近做了限制,新開域名郵箱不再允許通過smtp協議的25端口的普通鏈接方式鏈接,只允許ssl的465或587端口[我的一個域名郵箱內測期開通的域名郵箱目前25端口還是可以鏈接的,可能是安全策略,限制了新開域名郵箱賬戶的25端口]),固php還得openssl的支持,可以查看phpinfo

 

准備工作:

1、PHPMailer類文件

 

2、有一個郵箱賬號,這里我使用的是QQ郵箱

【注】這里有一點尤其要引起注意啦,一定要保證該郵箱賬號的SMTP/POP3服務是開啟的,否則是沒有辦法連接到郵箱服務器,更不可能發送郵件的。

具體查看:

【設置】-->【郵箱設置】-->【賬戶】-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務

 

 

在進行此操作時,常會出現一下錯誤:

1、Function set_magic_quotes_runtime() is deprecated?

 【問題緣由】PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函數

   【解決之道】就是用ini_set()辦法替代原有的set_magic_quotes_runtime語法,例如:

 

2、Password command failed: 535 Error: authentication failed?

   【解決之道】將$mail->Password該配置項的值修改為SMTP服務器的授權碼即可,而不是登錄SMTP服務器的密碼。

 

 

<?php
$user_name = "李武明"; $content = <<<html <pre> 親愛的$user_name: 您好,您的小米帳號117314868於2016-12-17 12:03:30登錄小米雲服務。如果此登錄行為非您本人操作,請立即登錄https://account.xiaomi.com 修改密碼 如果您對此通知有任何疑問,請訪問<a href="https://www.baidu.com">http://www.mi.com/service/contact</a> 聯系我們的客服進行咨詢 此郵件由系統自動發出,請勿直接回復。 </pre> html; $addAddress = array('1459543371@qq.com','1169714343@qq.com','liwuming900913@163.com'); $config = array( 'fromName' => '李武明', 'userName' => '1459543371@qq.com', 'userPwd' => 'lxpuoxthkatdhjic', 'from' => '1459543371@qq.com', 'subject' => 'PHPMailer發送郵件的測試', 'content' => $content, 'addAttachment' => array("./zhuomian1.png","./zhuomian2.png","./zhuomian3.png","./zhuomian4.png") ); postmail($addAddress,$config); /** * @brief:發送email * @param $to 收件人 * @param $config SMTP服務器相關配置信息 * @param $content 郵件內容 */ function postmail($addAddress,$config){ require_once("./PHPMailer/class.phpmailer.php"); $mail = new PHPMailer(); //示例化PHPMailer核心類 //SMTP服務器的相關信息設置 $mail->SMTPDebug = 1;       //是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 默認關閉debug調試模式 $mail->isSMTP();   //使用smtp鑒權方式發送郵件 $mail->SMTPAuth=true; //smtp需要鑒權 這個必須是true $mail->Host = 'smtp.qq.com'; //鏈接qq域名郵箱的服務器地址 $mail->SMTPSecure = 'ssl'; //設置使用ssl加密方式登錄鑒權 $mail->Port = 465; //設置ssl連接smtp服務器的遠程服務器端口號 可選465或587 $mail->CharSet = 'UTF-8'; //設置發送的郵件的編碼 //發件人信息相關設置 $mail->FromName = $config['fromName']; //設置發件人姓名(昵稱) 任意內容,顯示在收件人郵件的發件人郵箱地址前的發件人姓名 $mail->Username = $config['userName']; //smtp登錄的賬號 這里填入字符串格式的qq號即可 $mail->Password = $config['userPwd']; //smtp登錄的密碼 $mail->From = $config['from']; //設置發件人郵箱地址 //郵件內容設置 $mail->isHTML(true); //郵件正文是否為html編碼 注意此處是一個方法 不再是屬性 true或false //設置收件人郵箱地址 該方法有兩個參數 第一個參數為收件人郵箱地址 if(empty($addAddress)){ return false; }else if(is_array($addAddress)){ foreach($addAddress as $value){ if(is_array($value)){ $mail->addAddress($value['email'],$value['text']); }else{ $mail->addAddress($value); } } }else{ $mail->addAddress($value['email']); } //為該郵件添加附件 該方法也有兩個參數 第一個參數為附件存放的目錄(相對目錄、或絕對目錄均可) 第二參數為在郵件附件中該附件的名稱 if(is_array($config['addAttachment'])){ foreach($config['addAttachment'] as $value){ $mail->addAttachment($value); } }else if(!empty($config['addAttachment'])){ $mail->addAttachment($config['addAttachment']); } $mail->Subject = $config['subject']; //添加該郵件的主題 $mail->Body = $config['content']; //添加郵件正文 上方將isHTML設置成了true,則可以是完整的html字符串 如:使用file_get_contents函數讀取本地的html文件 $status = $mail->send(); //簡單的判斷與提示信息 if($status) { echo '發送郵件成功'; }else{ echo '發送郵件失敗,錯誤信息未:'.$mail->ErrorInfo; } } ?>

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM