php郵件驗證
1. php用imap收取郵件,當密碼錯誤時驗證時間很長,不知道為什麼。
//以騰訊企業郵箱做了測試
$mailServer="imap.exmail.qq.com"; //IMAP主機
$mailLink="{{$mailServer}:143}INBOX" ; //imagp連接地址:不同主機地址不同
$mailUser = '***'; //郵箱用戶名
$mailPass = '***'; //郵箱密碼
$mbox = imap_open($mailLink,$mailUser,$mailPass); //開啟信箱imap_open
$totalrows = imap_num_msg($mbox); //取得信件數
for ($i=1;$i<$totalrows;$i++){
$headers = imap_fetchheader($mbox, $i); //獲取信件標頭
$headArr = matchMailHead($headers); //匹配信件標頭
$mailBody = imap_fetchbody($mbox, $i, 1); //獲取信件正文
}
/**
*
* 匹配提取信件頭部信息
* @param String $str
*/
function matchMailHead($str){
$headList = array();
$headArr = array(
'from',
'to',
'date',
'subject'
);
foreach ($headArr as $key){
if(preg_match('/'.$key.':(.*?)[\n\r]/is', $str,$m)){
$match = trim($m[1]);
$headList[$key] = $key=='date'?date('Y-m-d H:i:s',strtotime($match)):$match;
}
}
return $headList;
}
2. PHP郵件驗證找回密碼
給你舉個例子, 就拿找回密碼來說吧.
當用戶請求找回密碼的時候, 用戶根據用戶提供的用戶名或郵箱到資料庫查找這個用戶的信息, 如果相關用戶名或者郵箱存在就可以進行密碼找回, 如果不存在提示用戶輸入錯誤.
當在資料庫中找到相關記錄的時候, 首先要生成一個隨機的驗證碼(這里我們假設生成了ABCDE), 將驗證碼,請求時間和相關用戶信息(可能只是用戶id或者也可以將驗證碼存在用戶信息表中)存到資料庫中, 然後想記錄中的郵箱發送一封信, 信中提供一個驗證碼或者攜帶驗證碼的url類似這樣,a.php?code=ABCDE.
用戶如果是這個郵箱的所有者就可以收到這封信, 點擊鏈接訪問a.php ?code=ABCDE, a.php 接到code=ABCDE 然後到資料庫里查找這個找回密碼的請求, 並取得用戶相關信息然後提供一個表單用來修改密碼.
用戶輸入新密碼之後程序根據驗證碼和新密碼將指定用戶的密碼修改掉.
3. php如何實現郵箱驗證
這是一個可以發送郵件的程序。程序是直接使用SMTP協議進行發送,用到了經典的phpMailer庫。
請閱讀apply.php文件。
發郵件之前你需要一個用來發送郵件的郵箱賬號。但不能使用這個賬號發送太多的郵件,否則會被當做垃圾郵件屏蔽。如果發送量較大,可以多申請幾個郵箱。
關鍵變數說明:
subject: 郵件的主題
email: 郵件的內容
host: SMTP主機,與你申請的郵箱的服務商有關,詳見代碼內注釋
fromname: 發件人的名字,可以任意寫,對方收到時能看到這個名字
from: 發件人地址
to: 收件人地址,代碼中寫了$to = $from,請自行更改
username和password: 你郵箱的賬號和密碼,一般username都等於發件人地址。必須提供,否則無法發送郵件。
PHPMailer說明:
$mailer = new PHPMailer(true);
$mailer->IsHTML(true); // 這是一封HTML郵件
$mailer->IsSMTP(true); // 連接SMTP服務發送郵件
# $mailer->SMTPDebug = true; // 是否開啟調試模式
$mailer->CharSet = 'UTF-8'; // 郵件內容的編碼,和你程序的編碼保持一致
$mailer->Encoding = 'base64'; // 郵件傳遞過程使用的編碼
$mailer->FromName = $fromname; // 發件人
$mailer->Host = $host; // SMTP服務地址
$mailer->AddAddress($to); // 添加收件人
$mailer->From = $from; // 設置發件人
$mailer->Subject = $subject; // 設置主題
$mailer->MsgHTML($email); // 設置HTML郵件內容
$mailer->SMTPAuth = true; // 開啟SMTP驗證
$mailer->Username = $username; // 設置用戶名
$mailer->Password = $passwd; // 設置密碼
$mailer->Send(); // 發送郵件
4. PHP如何通過SMTP驗證發送郵件
PHP mail()與SMTP驗證
缺乏靈活性是PHP的mail()函數顯得過於簡單的部分原因。最重要而且令人沮喪的是,死板的mail()函數通常還不允許你使用你選擇的SMTP伺服器,並且它也根本不支持如今已被眾多郵件伺服器採用的SMTP驗證。
幸運的是,克服PHP本身的缺陷既不困難,也不麻煩,更不痛苦。對於大多數情況下的郵件應用,免費的PEAR Mail包足夠提供全部的所需功能與靈活性,並且它也能夠與你期望的外部郵件伺服器進行驗證。在提高安全性的方面,它也支持SSL連接。
通過SMTP驗證在PHP腳本中發送郵件
在PHP腳本中通過SMTP驗證連接外部SMTP伺服器並且發送郵件的方法如下:
確保PEAR Mail包已經安裝。
通常,它已經安裝到了PHP之中,尤其在PHP 4及以後的版本中。放手一試吧。
<?php
require_once"Mail.php";
$from="SandraSender<s>";
$to="RamonaRecipient<r>";
$subject="Hi!";
$body="Hi, Howareyou?";
$host="mail.example.com";
$username="smtp_username";
$password="smtp_password";
$headers=array('From'=>$from,
'To'=>$to,
'Subject'=>$subject);
$smtp=Mail::factory('smtp',
array('host'=>$host,
'auth'=>true,
'username'=>$username,
'password'=>$password));
$mail=$smtp->send($to,$headers,$body);
if(PEAR::isError($mail)){
echo("<p>".$mail->getMessage()."</p>");
}else{
echo("<p>Messagesuccessfullysent!</p>");
}
?>
5. php判斷郵箱格式
簡單說下吧,太復雜了你也聽不懂,/ 和 / 表示正則表達式的開始和結束,()表示需要匹配部分的規則,[\w\-]表示這部分允許是字母、數字和下劃線(_),再仔細看上面這句話,就是說,郵箱要由三個部分組成,第一部分到@符號,第二部分到點(.),第三部分到結束,每一部分都只能是字母、數字和下劃線組成。
6. php驗證郵箱格式
PHP正則表達式驗證郵箱示例如下:
<?php
$email='[email protected]';
$pattern="/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
if(preg_match($pattern,$email)){
echo '郵箱驗證通過!';
} else{
echo '郵箱格式錯誤!';
}
?>