下載phpmailer類 我本次的實驗用的是版本 5.2.9
下載後解壓提取文件class.smtp.php
class.phpmailer.php
PHPMailerAutoload.php
放在phpmailer目錄裏
1.鏈接數據庫
conn.php
$conn=mysql_connect("localhost","root","");
if(!$conn){
die('鏈接失敗'.mysql_error());
}
mysql_select_db("test",$conn) or die("數據庫選擇失敗".mysql_error());
2創建數據庫表
create table user(
uid int primary key auto_increment,
uname char(20) not null default '',
email char(30) not null default '',
pass char(32) not null default '',
status tinyint not null default 0
)engine myisam charset utf8;
create table activecode(
cid int primary key auto_increment,
uname char(20) not null default '',
code char(16) not null default '',
expire int not null default 0
)engine myisam charset utf8;
3.模擬註冊和發送郵件代碼如下
<?php
/**
1.鏈接數據庫
2.insert用戶表
3.隨機產生激活碼並insert activecode 表
4把產生的激活碼發送郵件
*/
require('conn.php');
require('../phpmailer/PHPMailerAutoload.php');
$uname="username";
$email="[email protected]";
//2註冊
$sql="insert into user(uname,email) values('$uname','$email')";
mysql_query($sql);
//3生成隨機激活碼
$str="abcdefghijklmnopkrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456";
$code=substr(str_shuffle(substr($str,0,58)),0,8);
$expire=time()+2*24*3600;
$sql="insert into activecode(uname,code,expire)values('$uname','$code',$expire)";
$result=mysql_query($sql);
if(!$result){
die ("註冊不成功");
}
//4發送郵件進行驗證
function sendEmail($to,$title,$contents,$type = '',$accessory =''){
$mail = new PhpMailer(true);
$mail->IsSMTP();
$mail->CharSet ="UTF-8";//編碼
$mail->Debugoutput = 'html';// 支持HTML格式
$mail->Host = 'smtp.163.com';//HOST 地址
$mail->Port = 25;//端口
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';//163郵箱用戶名
$mail->Password = '163郵箱密碼你的密碼';//密碼
$mail->SetFrom('[email protected]','fuck');//發件人地址, 發件人名稱
$mail->AddAddress($to);//收信人地址
//$mail->Subject = "=?utf-8?B?" . base64_encode() . "?=";
if (!empty($type)) {
$mail->AddAttachment($type,$accessory); // 添加附件,並指定名稱
}
$mail->Subject = $title;//郵件標題
$mail->MsgHTML($contents);
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}else {
echo "Message sent!";
}
}
sendEmail($email,$uname.'驗證郵件','請您點擊:http://localhost/test2/loginmail/2.php?code='.$code.' 進行激活','','');
?>
4.驗證激活碼 完成註冊 2.php代碼如下
require "conn.php";
$code=$_GET['code'];
if(strlen($code)!=8){
die("激活碼長度不夠");
}
$sql="select * from activecode where code='$code'";
$rs=mysql_query($sql);
$row=mysql_fetch_assoc($rs);
if(empty($row)){
echo "激活碼有誤";
}
var_dump($row);
//激活用戶
$sql="update user set status=1 where uname='$row[uname]'";
$rs2=mysql_query($sql);
if($rs2){
echo "激活成功";
}
以上是我這個菜鳥的總結