ホームページ php教程 php手册 PHP发送邮箱激活验证

PHP发送邮箱激活验证

Jun 13, 2016 am 10:55 AM
php server 送信 データベース アクティベーション 接続する 郵便 確認する

第一步:php连接数据库:dbconnection.php

 

$server = "(local)";

$_uid = "adweb";

$_pwd = "loveyou";

$_database = "addev";

 

 function sqlsrv_connect( $server , $uid ,$pwd,$db  ){

    

    $connect_id= mssql_connect($server, $uid, $pwd);

           //echo $connect_id ;

   if($connect_id){

               if (mssql_select_db($db,$connect_id))

                   return $connect_id ;

    else

     echo mssql_get_last_message() ; 

           }

   else

    echo mssql_get_last_message() ;

 }

 function sqlsrv_query($SQL,$conn  ) {

   returnmssql_query( $SQL ,$conn ) ;

 }

function sqlsrv_num_rows($n) {

 

 return mssql_num_rows($n) ;

}

function sqlsrv_fetch_array($n) {

  returnmssql_fetch_array($n);

}

//调用函数,连接数据库

$conn = sqlsrv_connect( $server , $_uid ,$_pwd,$_database  ) ;

?>

 

第二步:邮箱类email.class.php

 

class smtp

{

 

var $smtp_port;

var $time_out;

var $host_name;

var $log_file;

var $relay_host;

var $debug;

var $auth;

var $user;

var $pass;

 

var $sock;

 

function smtp($relay_host = "", $smtp_port = 25,$auth =false,$user,$pass)

{

$this->debug = FALSE;

$this->smtp_port = $smtp_port;

$this->relay_host = $relay_host;

$this->time_out = 30; //is used in fsockopen()

#

$this->auth = $auth;//auth

$this->user = $user;

$this->pass = $pass;

#

$this->host_name = "localhost"; //is used in HELOcommand

$this->log_file ="";

$this->sock = FALSE;

}

 

function sendmail($to, $from, $subject = "", $body = "", $mailtype,$cc = "", $bcc = "", $additional_headers = "")

{

$mail_from =$this->get_address($this->strip_comment($from));

$body = ereg_replace("(^|(\r\n))(\\.)", "\\1.\\3", $body);

$header .= "MIME-Version:1.0\r\n";

if($mailtype=="HTML"){

$header .= "Content-Type:text/html\r\n";

}

$header .= "To: ".$to."\r\n";

if ($cc != "") {

$header .= "Cc: ".$cc."\r\n";

}

$header .= "From:$from\r\n";

$header .= "Subject: ".$subject."\r\n";

$header .= $additional_headers;

$header .= "Date: ".date("r")."\r\n";

$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: \r\n";

$TO = explode(",", $this->strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",",$this->strip_comment($cc)));

}

if ($bcc != "") {

$TO = array_merge($TO, explode(",",$this->strip_comment($bcc)));

}

$sent = TRUE;

foreach ($TO as $rcpt_to) {

$rcpt_to = $this->get_address($rcpt_to);

if (!$this->smtp_sockopen($rcpt_to)) {

$this->log_write("Error: Cannot send email to".$rcpt_to."\n");

$sent = FALSE;

continue;

}

if($this->smtp_send($this->host_name,$mail_from, $rcpt_to, $header, $body)) {

$this->log_write("E-mail has been sent to\n");

} else {

$this->log_write("Error: Cannot send email to\n");

$sent = FALSE;

}

fclose($this->sock);

$this->log_write("Disconnected from remotehost\n");

}

echo "
";

echo $header;

return $sent;

}

function smtp_send($helo, $from, $to, $header, $body = "")

{

if (!$this->smtp_putcmd("HELO", $helo)) {

return $this->smtp_error("sending HELOcommand");

}

#auth

if($this->auth){

if (!$this->smtp_putcmd("AUTH LOGIN",base64_encode($this->user))) {

return $this->smtp_error("sending HELOcommand");

}

if (!$this->smtp_putcmd("",base64_encode($this->pass))) {

return $this->smtp_error("sending HELOcommand");

}

}

#

if (!$this->smtp_putcmd("MAIL","FROM:")) {

return $this->smtp_error("sending MAIL FROMcommand");

}

if (!$this->smtp_putcmd("RCPT","TO:")) {

return $this->smtp_error("sending RCPT TOcommand");

}

if (!$this->smtp_putcmd("DATA")) {

return $this->smtp_error("sending DATAcommand");

}

if (!$this->smtp_message($header, $body)) {

return $this->smtp_error("sending message");

}

if (!$this->smtp_eom()) {

return $this->smtp_error("sending.[EOM]");

}

if (!$this->smtp_putcmd("QUIT")) {

return $this->smtp_error("sending QUITcommand");

}

return TRUE;

}

function smtp_sockopen($address)

{

if ($this->relay_host == "") {

return $this->smtp_sockopen_mx($address);

} else {

return $this->smtp_sockopen_relay();

}

}

function smtp_sockopen_relay()

{

$this->log_write("Trying to".$this->relay_host.":".$this->smtp_port."\n");

$this->sock =@fsockopen($this->relay_host,$this->smtp_port, $errno, $errstr,$this->time_out);

if (!($this->sock &&$this->smtp_ok())) {

$this->log_write("Error: Cannot connenct to relayhost ".$this->relay_host."\n");

$this->log_write("Error: ".$errstr."(".$errno.")\n");

return FALSE;

}

$this->log_write("Connected to relay host".$this->relay_host."\n");

return TRUE;;

}

function smtp_sockopen_mx($address)

{

$domain = ereg_replace("^.+@([^@]+)$", "\\1", $address);

if (!@getmxrr($domain,$MXHOSTS)) {

$this->log_write("Error: Cannot resolve MX\"".$domain."\"\n");

return FALSE;

}

foreach ($MXHOSTS as $host) {

$this->log_write("Trying to".$host.":".$this->smtp_port."\n");

$this->sock = @fsockopen($host,$this->smtp_port, $errno, $errstr,$this->time_out);

if (!($this->sock &&$this->smtp_ok())) {

$this->log_write("Warning: Cannot connect to mx host".$host."\n");

$this->log_write("Error: ".$errstr."(".$errno.")\n");

continue;

}

$this->log_write("Connected to mx host".$host."\n");

return TRUE;

}

$this->log_write("Error: Cannot connect to any mxhosts (".implode(", ", $MXHOSTS).")\n");

return FALSE;

}

function smtp_message($header, $body)

{

fputs($this->sock, $header."\r\n".$body);

$this->smtp_debug(">".str_replace("\r\n", "\n"."> ",$header."\n> ".$body."\n> "));

return TRUE;

}

function smtp_eom()

{

fputs($this->sock, "\r\n.\r\n");

$this->smtp_debug(". [EOM]\n");

return $this->smtp_ok();

}

function smtp_ok()

{

$response = str_replace("\r\n", "",fgets($this->sock, 512));

$this->smtp_debug($response."\n");

if (!ereg("^[23]", $response)) {

fputs($this->sock, "QUIT\r\n");

fgets($this->sock, 512);

$this->log_write("Error: Remote host returned\"".$response."\"\n");

return FALSE;

}

return TRUE;

}

function smtp_putcmd($cmd, $arg = "")

{

if ($arg != "") {

if($cmd=="") $cmd = $arg;

else $cmd = $cmd." ".$arg;

}

fputs($this->sock, $cmd."\r\n");

$this->smtp_debug(">".$cmd."\n");

return $this->smtp_ok();

}

function smtp_error($string)

{

$this->log_write("Error: Error occurred while".$string.".\n");

return FALSE;

}

function log_write($message)

{

$this->smtp_debug($message);

if ($this->log_file == "") {

return TRUE;

}

$message = date("M d H:i:s").get_current_user()."[".getmypid()."]: ".$message;

if (!@file_exists($this->log_file)|| !($fp = @fopen($this->log_file, "a"))) {

$this->smtp_debug("Warning: Cannot open log file\"".$this->log_file."\"\n");

return FALSE;

}

flock($fp, LOCK_EX);

fputs($fp, $message);

fclose($fp);

return TRUE;

}

function strip_comment($address)

{

$comment = "\\([^()]*\\)";

while (ereg($comment, $address)) {

$address = ereg_replace($comment, "", $address);

}

return $address;

}

function get_address($address)

{

$address = ereg_replace("([ \t\r\n])+", "", $address);

$address =ereg_replace("^.*.*$","\\1", $address);

return $address;

}

function smtp_debug($message)

{

if ($this->debug) {

echo $message."
";

}

}

function get_attach_type($image_tag) { //

$filedata = array();

$img_file_con=fopen($image_tag,"r");

unset($image_data);

while($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag))))

$image_data.=$tem_buffer;

fclose($img_file_con);

$filedata['context'] = $image_data;

$filedata['filename']= basename($image_tag);

$extension=substr($image_tag,strrpos($image_tag,"."),strlen($image_tag)-strrpos($image_tag,"."));

switch($extension){

case ".gif":

$filedata['type'] = "image/gif";

break;

case ".gz":

$filedata['type'] = "application/x-gzip";

break;

case ".htm":

$filedata['type'] = "text/html";

break;

case ".html":

$filedata['type'] = "text/html";

break;

case ".jpg":

$filedata['type'] = "image/jpeg";

break;

case ".tar":

$filedata['type'] = "application/x-tar";

break;

case ".txt":

$filedata['type'] = "text/plain";

break;

case ".zip":

$filedata['type'] = "application/zip";

break;

default:

$filedata['type'] = "application/octet-stream";

break;

}

 

return $filedata;

}

}

?>

第三步:激活类jihuo.php

require('dbconnection.php');

  echo $_GET['code'];

  echo "已经激活";

  echo "


";

if($_GET[code]) {

 $result=sqlsrv_query(  'select *from actcode  where code="'.$_GET[code].'"',$conn);   //查询数据库中是否有此激活账号

 if(sqlsrv_num_rows($result) == 1 ) {

    //$_ROW =sqlsrv_fetch_array( $result );

  //$i = sqlsrv_query( 'updateADUser  set status=5 whereemail="'.$_ROW[email].'"', $conn ); //修改注册时此邮箱用户的状态值为1

  //if($i){

   //sqlsrv_query( ' delete  from actcode wherecode="'.$_GET[code].'"' ,$conn );

   echo'邮箱激活-请到主页登陆' ;

   //} 

 }

 else{

  echo '验证已结束' ;

 }

}

?>

 

第四步:发送邮箱类sendemail.php

 //发送激活邮件

require_once ('email.class.php');

require('dbconnection.php');

//##########################################

$smtpserver = "smtp.163.com";//SMTP服务器163/126/sohu/qq/xinlang

$smtpserverport =25;//SMTP服务器端口

$smtpusermail = "zxwzxw_1@163.com";//SMTP服务器的用户邮箱

$smtpuser = "zxwzxw_1";//SMTP服务器的用户帐号

$smtppass = "doyoumissme";//SMTP服务器的用户密码

$mailsubject = "你好,很高兴认识你!";//邮件主题

$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件

##########################################

$smtp = newsmtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.

$smtp->debug = false;//是否显示发送的调试信息

$toemail = "zxwzxw_12@163.com"; //收件人邮箱

$actcodes =md5($toemail.mt_rand(111111,999999)); 

$mmsg = '您已经注册成功 ,请将点击以下链接激活您的账号: 点击激活';

 $hh = sqlsrv_query('insert intoactcode(code,email) values("'.$actcodes.'" , "'.$toemail.'")',$conn);  //把注册时的邮箱号和验证插入数据表中

if($hh){

   $smtp->sendmail($toemail, $smtpusermail,$mailsubject, $mmsg,$mailtype);   //发送邮件

}

else {

 echo '发送失败!';

 exit;

}

   

?>

 

第五步:最后 :  发送邮箱激活验证.txt

 

1 建立数据库:addev  表ACTcode  字段code varchar(50)   emailvarchar(50)

2 连接数据:dbconnection.php

$server = "(local)";

$_uid = "adweb";

$_pwd = "loveyou";

$_database = "addev";

 

 function sqlsrv_connect( $server , $uid ,$pwd,$db  ){

    

    $connect_id= mssql_connect($server, $uid, $pwd);

           //echo $connect_id ;

   if($connect_id){

               if (mssql_select_db($db,$connect_id))

                   return $connect_id ;

    else

     echo mssql_get_last_message() ; 

           }

   else

    echo mssql_get_last_message() ;

 }

 

//调用函数,连接数据库

$conn = sqlsrv_connect( $server , $_uid ,$_pwd,$_database  ) ;

?>

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseekの公式ウェブサイトの入学ログインチュートリアル Deepseekの公式ウェブサイトの入学ログインチュートリアル Feb 19, 2025 pm 04:24 PM

Deepseekの公式ウェブサイトの入学ログインチュートリアル

セサミオープンドア公式ウェブサイトセサミオープンドアアプリ最新のウェブサイト セサミオープンドア公式ウェブサイトセサミオープンドアアプリ最新のウェブサイト Feb 28, 2025 am 11:18 AM

セサミオープンドア公式ウェブサイトセサミオープンドアアプリ最新のウェブサイト

セサミオープンドア交換Webページ登録リンクゲートトレーディングアプリ登録Webサイト最新 セサミオープンドア交換Webページ登録リンクゲートトレーディングアプリ登録Webサイト最新 Feb 28, 2025 am 11:06 AM

セサミオープンドア交換Webページ登録リンクゲートトレーディングアプリ登録Webサイト最新

Gateio Exchange Webバージョン登録ポータル Gateio Exchange Webバージョン登録ポータル Feb 20, 2025 pm 04:12 PM

Gateio Exchange Webバージョン登録ポータル

ゲート公式ウェブサイトログインアドレスゲートエクスチェンジ公式ウェブサイトログイン ゲート公式ウェブサイトログインアドレスゲートエクスチェンジ公式ウェブサイトログイン Feb 19, 2025 pm 03:09 PM

ゲート公式ウェブサイトログインアドレスゲートエクスチェンジ公式ウェブサイトログイン

3分でOUYI登録を取得します 3分でOUYI登録を取得します Feb 19, 2025 pm 06:54 PM

3分でOUYI登録を取得します

Gateio Trading Platform公式WebサイトログインGateio Loginポータル Gateio Trading Platform公式WebサイトログインGateio Loginポータル Feb 21, 2025 pm 02:42 PM

Gateio Trading Platform公式WebサイトログインGateio Loginポータル

セサミドアオープン登録登録セサミドアオープントレーディングプラットフォーム登録操作チュートリアル セサミドアオープン登録登録セサミドアオープントレーディングプラットフォーム登録操作チュートリアル Feb 28, 2025 am 11:09 AM

セサミドアオープン登録登録セサミドアオープントレーディングプラットフォーム登録操作チュートリアル

See all articles