首页 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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

okx欧易官方网站注册入口2025 okx欧易官方网站注册入口2025 Mar 04, 2025 pm 11:45 PM

OKX 欧易是一个领先的加密货币交易平台。本文将提供详细的步骤,指导您如何注册 OKX 欧易官方网站账户。您将了解如何访问官方网站、选择注册方式、填写必要信息并完成注册过程。文中还包含有关注意事项的信息,例如使用真实个人信息并设置强密码的重要性。

芝麻开门交易所网页版登入口 最新版gateio官网入口 芝麻开门交易所网页版登入口 最新版gateio官网入口 Mar 04, 2025 pm 11:48 PM

详细介绍芝麻开门交易所网页版登入口操作,含登录步骤、找回密码流程,还针对登录失败、无法打开页面、收不到验证码等常见问题提供解决方法,助你顺利登录平台。

gateio交易所app老版本 gateio交易所app老版本下载渠道 gateio交易所app老版本 gateio交易所app老版本下载渠道 Mar 04, 2025 pm 11:36 PM

Gateio 交易所 app 老版本下载渠道,涵盖官方、第三方应用市场、论坛社区等途径,还给出下载注意事项,帮你轻松获取老版本,解决新版本使用不适或设备兼容问题。

如何在Bitget官网注册并下载最新App 如何在Bitget官网注册并下载最新App Mar 05, 2025 am 07:54 AM

本指南提供了 Bitget 交易所官方 App 的详细下载和安装步骤,适用于安卓和 iOS 系统。指南整合了来自多个权威来源的信息,包括官网、App Store 和 Google Play,并强调了下载和账户管理过程中的注意事项。用户可以从官方渠道下载 App,包括应用商店、官网 APK 下载和官网跳转,并完成注册、身份验证和安全设置。此外,指南还涵盖了常见问题和注意事项,例如

芝麻开门登录注册入口 gate.io交易所注册官网入口 芝麻开门登录注册入口 gate.io交易所注册官网入口 Mar 04, 2025 pm 04:51 PM

Gate.io(芝麻开门)是全球领先的加密货币交易平台,本文提供Gate.io现货交易完整教程。教程涵盖账户注册登录、KYC认证、法币及数字货币充值、交易对选择、限价/市价交易下单以及订单和交易记录查看等步骤,助您快速上手Gate.io平台进行加密货币交易。 无论是新手还是老手,都能从本教程中获益,轻松掌握Gate.io交易技巧。

gate.io官方登陆网页版 芝麻开门交易平台网页版登陆 gate.io官方登陆网页版 芝麻开门交易平台网页版登陆 Mar 04, 2025 pm 04:33 PM

芝麻开门交易平台登录方式便捷,用户只需访问其官方网站(请自行搜索域名),输入注册邮箱/手机号及密码即可登录。平台可能启用2FA等安全验证机制,保障账户安全。

欧易okx交易平台app官网注册入口 欧易okx交易平台app官网注册入口 Mar 04, 2025 pm 11:27 PM

OKX交易平台,备受全球用户信赖的数字资产交易平台。平台提供多种数字资产交易服务,包括现货交易、期货交易、期权交易等。

binance下载APP binance币安平台下载免费APP binance下载APP binance币安平台下载免费APP Mar 18, 2025 pm 01:54 PM

本文详细介绍了苹果iOS系统和安卓Android系统手机下载Binance APP的两种方法。对于iOS系统,由于中国区App Store无法直接下载,用户需要使用外区Apple ID,可以选择借用或自行注册外区Apple ID进行下载。安卓系统用户则可以直接在应用商店搜索安装,或访问Binance官网扫描二维码下载安装包。需要注意的是,从非官方渠道下载应用时,可能需要开启手机的未知来源应用安装权限。 无论哪种系统,下载完成后即可使用Binance APP。

See all articles