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

 使用PHPMailer編寫發送郵件php

  PHPMailer需PHP的socket擴展支持,而PHPMailer連接qq域名郵箱時須要ssl加密方式(qq郵箱最近作了限制,新開域名郵箱再也不容許經過smtp協議的25端口的普通連接方式連接,只容許ssl的465或587端口[個人一個域名郵箱內測期開通的域名郵箱目前25端口仍是能夠連接的,多是安全策略,限制了新開域名郵箱帳戶的25端口]),固php還得openssl的支持,能夠查看phpinfohtml

 

準備工做:安全

一、PHPMailer類文件服務器

 

二、有一個郵箱帳號,這裏我使用的是QQ郵箱socket

【注】這裏有一點尤爲要引發注意啦,必定要保證該郵箱帳號的SMTP/POP3服務是開啓的,不然是沒有辦法鏈接到郵箱服務器,更不可能發送郵件的。函數

具體查看:post

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

 

 

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

一、Function set_magic_quotes_runtime() is deprecated?編碼

 【問題原因】PHP5.3和PHP6.0以後移除了set_magic_quotes_runtime()函數

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

 

二、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;
		}
	}
?>
相關文章
相關標籤/搜索