Heim 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  ) ;

?>

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gate.io Registrierungs -Tutorial Gate.io Registrierungs -Tutorial Mar 31, 2025 pm 11:09 PM

Dieser Artikel enthält ein detailliertes Tutorial für Gate.IO-Registrierung, das jeden Schritt vom Zugriff auf die offizielle Website bis zur Abschluss der Registrierung abdeckt, einschließlich Ausfüllen von Registrierungsinformationen, Überprüfung, Lesen von Benutzervereinbarungen usw. Der Artikel betont auch Sicherheitsmaßnahmen nach erfolgreicher Registrierung, z.

Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Mar 31, 2025 pm 11:48 PM

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Gate.io Neueste Registrierungs -Tutorial für Anfänger Gate.io Neueste Registrierungs -Tutorial für Anfänger Mar 31, 2025 pm 11:12 PM

Dieser Artikel bietet Neulingen detaillierte Tutorials für Gate.IO -Registrierung, wobei sie den Registrierungsprozess schrittweise abgeschlossen haben, einschließlich des Zugriffs auf die offizielle Website, das Ausfüllen von Informationen, die Identitätsprüfung usw. und betont die Sicherheitseinstellungen nach der Registrierung. Darüber hinaus erwähnte der Artikel auch andere Börsen wie Binance, Ouyi und Sesam Open Door. Es wird empfohlen, dass Anfänger die richtige Plattform entsprechend ihren eigenen Bedürfnissen auswählen und die Leser daran erinnern, dass digitale Asset -Investitionen riskant sind und rational investieren sollten.

Das neueste Registrierungsportal für die offizielle Website von Ouyi Das neueste Registrierungsportal für die offizielle Website von Ouyi Mar 21, 2025 pm 05:54 PM

Als weltweit führende digitale Asset Trading Platform zieht Ouyi OKX viele Investoren mit ihren reichhaltigen Handelsprodukten, starken Sicherheitsgarantien und bequemen Benutzererfahrungen an. Die Risiken der Netzwerksicherheit werden jedoch immer schwerwiegender, und es ist entscheidend, das offizielle Ouyi OKX -Konto sicher zu registrieren. In diesem Artikel wird das neueste Registrierungsportal für die offizielle Website von Ouyi OKX enthält und die Schritte und Vorsichtsmaßnahmen für eine sichere Registrierung ausführlich erläutert, einschließlich der Identifizierung der offiziellen Website, der festen Überprüfung der Zwei-Faktor usw., damit Sie Ihre digitale Anlageninvestitionsreise sicher und bequem beginnen können. Bitte beachten Sie, dass es Risiken bei der Investition in Digital Asset gibt. Bitte treffen Sie vorsichtige Entscheidungen.

Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Apr 01, 2025 pm 02:45 PM

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Binance Download App Binance Binance Plattform Download kostenlose App Binance Download App Binance Binance Plattform Download kostenlose App Mar 18, 2025 pm 01:54 PM

In diesem Artikel werden zwei Methoden zum Herunterladen von Binance -App auf Apple IOS -System- und Android -System -Mobiltelefonen vorgestellt. Da der App Store in China nicht direkt heruntergeladen werden kann, müssen Benutzer die Apple -ID in der Außenzone verwenden und die Apple -ID in der Außenzone ausleihen oder registrieren, um sie herunterzuladen. Android -Benutzer können es direkt im App Store suchen und installieren oder die offizielle Website von Binance besuchen, um den QR -Code zum Herunterladen des Installationspakets zu scannen. Es ist zu beachten, dass Sie beim Herunterladen von Anwendungen aus inoffiziellen Kanälen möglicherweise die Anwendungsinstallationsberechtigungen unbekannter Quellen auf Ihrem Telefon aktivieren müssen. Unabhängig davon, welches System Sie sind, können Sie nach dem Herunterladen die Binance -App verwenden.

See all articles