Home Backend Development PHP Tutorial PHP Send Email Activation Verification_PHP Tutorial

PHP Send Email Activation Verification_PHP Tutorial

Jul 14, 2016 am 10:09 AM
php server send database activation connect Mail verify

第一步: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("(^|(rn))(\.)", "\1.\3", $body);
$header .= "MIME-Version:1.0rn";
if($mailtype=="HTML"){
$header .= "Content-Type:text/htmlrn";
}
$header .= "To: ".$to."rn";
if ($cc != "") {
$header .= "Cc: ".$cc."rn";
}
$header .= "From:$from<".$from.">rn";
$header .= "Subject: ".$subject."rn";
$header .= $additional_headers;
$header .= "Date: ".date("r")."rn";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: <".date("YmdHis",$sec).".".($msec*1000000).".".$mail_from.">rn";
$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<".$rcpt_to.">n");
} else {
$this->log_write("Error: Cannot send email to<".$rcpt_to.">n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remotehostn");
}
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:<".$from.">")) {
return $this->smtp_error("sending MAIL FROMcommand");
}
if (!$this->smtp_putcmd("RCPT","TO:<".$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."rn".$body);
$this->smtp_debug(">".str_replace("rn", "n"."> ",$header."n> ".$body."n> "));
return TRUE;
}
function smtp_eom()
{
fputs($this->sock, "rn.rn");
$this->smtp_debug(". [EOM]n");
return $this->smtp_ok();
}
function smtp_ok()
{
$response = str_replace("rn", "",fgets($this->sock, 512));
$this->smtp_debug($response."n");
if (!ereg("^[23]", $response)) {
fputs($this->sock, "QUITrn");
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."rn");
$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("([ trn])+", "", $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); //Query whether there is this activated account in the database
if(sqlsrv_num_rows($result) == 1 ) {
//$_ROW =sqlsrv_fetch_array( $result );
//$i = sqlsrv_query( 'updateADUser set status=5 whereemail="'.$_ROW[email].'"', $conn ); //Modify the status value of this email user when registering to 1
//if($i){
//sqlsrv_query( ' delete from actcode wherecode="'.$_GET[code].'"' ,$conn );
echo 'Email activation-please log in to the homepage' ;
//}
}
else{
echo 'Verification completed' ;
}
}
?>
Step 4: Send email class sendemail.php
//Send activation email
require_once ('email.class.php');
require('dbconnection.php');
//#########################################
$smtpserver = "smtp.163.com";//SMTP server 163/126/sohu/qq/xinlang
$smtpserverport =25;//SMTP server port
$smtpusermail = "zxwzxw_1@163.com";//The user email of the SMTP server
$smtpuser = "zxwzxw_1";//SMTP server user account
$smtppass = "doyoumissme";//User password of the SMTP server
$mailsubject = "Hello, nice to meet you!";//Email subject
$mailtype = "HTML";//Email format (HTML/TXT), TXT is text email
#########################################
$smtp = newsmtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//A true here means that authentication is used, otherwise authentication is not used.
$smtp->debug = false;//Whether to display the sent debugging information
$toemail = "zxwzxw_12@163.com"; //Recipient's email address
$actcodes =md5($toemail.mt_rand(111111,999999));
$mmsg = 'You have registered successfully, please click the following link to activate your account: ';
$hh = sqlsrv_query('insert intoactcode(code,email) values("'.$actcodes.'" , "'.$toemail.'")',$conn); //Insert the email number when registering and validate insert into data table
if($hh){
$smtp->sendmail($toemail, $smtpusermail,$mailsubject, $mmsg,$mailtype); //Send mail
}
else {
echo 'Sending failed! ';
exit;
}
?>
Step 5: Finally: Send email activation verification.txt
1 Create database: addev table ACTcode field code varchar(50) emailvarchar(50)
2 Connection data: 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() ;
}
//Call function and connect to database
$conn = sqlsrv_connect( $server , $_uid ,$_pwd,$_database ) ;
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477674.htmlTechArticleStep 1: PHP connection to the database: dbconnection.php ?php $server = (local); $_uid = adweb ; $_pwd = loveyou; $_database = addev; function sqlsrv_connect( $server , $uid ,$pwd,$db ){ $c...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1253
24
How to download, install and register the Hong Kong Digital Currency Exchange app 2025 How to download, install and register the Hong Kong Digital Currency Exchange app 2025 Apr 30, 2025 pm 07:18 PM

The download, installation and registration process of the Hong Kong Digital Currency Exchange app is very simple. Users can quickly obtain and use this app through the official app download link provided in this article. This article will introduce in detail how to download, install and register the Hong Kong Digital Currency Exchange app to ensure that every user can complete the operation smoothly.

What is the significance of the session_start() function? What is the significance of the session_start() function? May 03, 2025 am 12:18 AM

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

Composer: The Package Manager for PHP Developers Composer: The Package Manager for PHP Developers May 02, 2025 am 12:23 AM

Composer is a dependency management tool for PHP, and manages project dependencies through composer.json file. 1) parse composer.json to obtain dependency information; 2) parse dependencies to form a dependency tree; 3) download and install dependencies from Packagist to the vendor directory; 4) generate composer.lock file to lock the dependency version to ensure team consistency and project maintainability.

What are the three giants in the currency circle? Top 10 Recommended Virtual Currency Main Exchange APPs What are the three giants in the currency circle? Top 10 Recommended Virtual Currency Main Exchange APPs Apr 30, 2025 pm 06:27 PM

In the currency circle, the so-called Big Three usually refers to the three most influential and widely used cryptocurrencies. These cryptocurrencies have a significant role in the market and have performed well in terms of transaction volume and market capitalization. At the same time, the mainstream virtual currency exchange APP is also an important tool for investors and traders to conduct cryptocurrency trading. This article will introduce in detail the three giants in the currency circle and the top ten mainstream virtual currency exchange APPs recommended.

How to download the Hong Kong Digital Currency Exchange app? The top ten digital currency exchange apps are included How to download the Hong Kong Digital Currency Exchange app? The top ten digital currency exchange apps are included Apr 30, 2025 pm 07:12 PM

The methods to download the Hong Kong Digital Currency Exchange APP include: 1. Select a compliant platform, such as OSL, HashKey or Binance HK, etc.; 2. Download through official channels, iOS users download on the App Store, Android users download through Google Play or official website; 3. Register and verify their identity, use Hong Kong mobile phone number or email address to upload identity and address certificates; 4. Set security measures, enable two-factor authentication and regularly check account activities.

Top 10 Digital Currency Trading Apps Rankings: Top 10 Safe and Easy Virtual Digital Currency Exchanges Top 10 Digital Currency Trading Apps Rankings: Top 10 Safe and Easy Virtual Digital Currency Exchanges Apr 30, 2025 pm 04:24 PM

The rankings of the top ten digital currency trading apps are: 1. Binance, 2. OKX, 3. Coinbase, 4. Kraken, 5. Huobi, 6. KuCoin, 7. Bitfinex, 8. Bittrex, 9. Gemini, 10. Poloniex. These exchanges provide a safe and reliable trading environment and a variety of trading methods. Users can operate on each platform through the steps of registration, email verification, KYC identity verification, deposit and start trading.

How to register in the ok exchange in China? ok trading platform registration and use guide for beginners in mainland China How to register in the ok exchange in China? ok trading platform registration and use guide for beginners in mainland China May 08, 2025 pm 10:51 PM

In the cryptocurrency market, choosing a reliable trading platform is crucial. As a world-renowned digital asset exchange, the OK trading platform has attracted a large number of novice users in mainland China. This guide will introduce in detail how to register and use it on the OK trading platform to help novice users get started quickly.

What's Happening with MongoDB? Exploring the Facts What's Happening with MongoDB? Exploring the Facts May 04, 2025 am 12:15 AM

MongoDB is still a powerful database solution. 1) It is known for its flexibility and scalability and is suitable for storing complex data structures. 2) Through reasonable indexing and query optimization, its performance can be improved. 3) Using aggregation framework and sharding technology, MongoDB applications can be further optimized and extended.

See all articles