標籤:預設 user 系統 image pop cti 錯誤 hang bsp
使用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(‘[email protected]‘,‘[email protected]‘,‘[email protected]‘);$config = array(‘fromName‘=>‘李武明‘,‘userName‘=>‘[email protected]‘,‘userPwd‘=>‘lxpuoxthkatdhjic‘,‘from‘=>‘[email protected]‘,‘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;}}?>
使用PHP發送email進行帳號啟用或者密碼修改操作