郵件發送處理 下面是真正的秘密了,可要看仔細了。:)
有些意思很清楚的我就不說了。 這個函數一共有四個參數,分別是$to表示收信人,$from表示發信人,$subject表求郵件主題和$message表示郵件體。如果處理成功則返回true,失敗則返回false。 第8行,連接郵件服務器,如果成功響應碼應為220。
1 function send( $to,$from,$subject,$message)2 {34 //連接服務器5 $this->lastact="connect";67 $this->show_debug("Connect to SMTP server : ".$this->smtp,
"out");8 $this->fp = fsockopen ( $this->smtp, $this->port );9 if ( $this->fp )10 {1112 set_socket_blocking( $this->fp, true );13 $this->lastmessage=fgets($this->fp,512);14 $this->show_debug($this->lastmessage, "in");1516 if (! ereg ( "^220", $this->lastmessage ) ) 17 {18 return false;19 } 20 else 21 {22 $this->lastact="HELO " . $this->welcome . "/n";23 if(!$this->do_command($this->lastact, "250"))24 {25 fclose($this->fp);26 return false;27 }2829 $this->lastact="MAIL FROM: $from" . "/n";30 if(!$this->do_command($this->lastact, "250"))31 {32 fclose($this->fp);33 return false;34 }3536 $this->lastact="RCPT TO: $to" . "/n";37 if(!$this->do_command($this->lastact, "250"))38 {39 fclose($this->fp);40 return false;41 }42 43 //發送正文44 $this->lastact="DATA/n";45 if(!$this->do_command($this->lastact, "354"))46 {47 fclose($this->fp);48 return false;49 }5051 //處理Subject頭52 $head="Subject: $subject/n";53 if(!empty($subject) && !ereg($head, $message))54 {55 $message = $head.$message;56 }57 58 //處理From頭59 $head="From: $from/n";60 if(!empty($from) && !ereg($head, $message))61 {62 $message = $head.$message;63 }6465 //處理To頭66 $head="To: $to/n";67 if(!empty($to) && !ereg($head, $message))68 {69 $message = $head.$message;70 }7172 //加上結束串73 if(!ereg("/n/./n", $message))74 $message .= "/n./n";75 $this->show_debug($message, "out");76 fputs($this->fp, $message);7778 $this->lastact="QUIT/n";79 if(!$this->do_command($this->lastact, "250"))80 {81 fclose($this->fp);82 return false;83 }84 }85 return true;86 }87 else88 {89 $this->show_debug("Connect failed!", "in");90 return false;91 }92 }
新聞熱點
疑難解答
圖片精選