host_name="mail.xiaocui.com"; $smtp->localhost="localhost";$from="webmaster@xiaocui.com";$to="root@xiaocui.com";if($smtp->보내기"/> host_name="mail.xiaocui.com"; $smtp->localhost="localhost";$from="webmaster@xiaocui.com";$to="root@xiaocui.com";if($smtp->보내기">

>백엔드 개발 >PHP 튜토리얼 >그녀는 내 죄입니다 gtp smtp 이메일 전송 예

그녀는 내 죄입니다 gtp smtp 이메일 전송 예

WBOY
WBOY원래의
2016-07-29 08:34:431204검색

test_smtp.php
require("smtp.php");
$smtp=new smtp_class;
$smtp->host_name="mail.xiaocui.com";
$smtp->localhost="localhost";
$from="webmaster@xiaocui.com";
$to="root@xiaocui.com";
if($smtp-> SendMessage(
  $from,
  array(
   $to
  ),
  array(
   "보낸 사람: $from",
   "받는 사람: $to",
   "제목: Manuel Lemos의 SMTP 클래스 테스트"
  ),
  "안녕하세요 $to,nnSMTP 클래스가 제대로 작동하고 있음을 알려드립니다.nnBye.n"))
  echo "$to OK.n으로 메시지 전송됨";
else
  echo "$to.nError로 메시지를 보낼 수 없습니다: ".$smtp->error."n"
?>
smtp.php
class smtp_class
{
var $host_name="";
var $host_port=25;
var $localhost="";
var $timeout=0;
var $error="";
var $debug=1;
var $esmtp=1;
var $esmtp_host="";
var $esmtp_extensi>var $maximum_piped_recipients=100;
/* 개인 변수 - 액세스하지 마세요 */
var $state="Disconnected";
var $c>var $pending_recipients=0;
/ * 비공개 메소드 - 호출하지 마세요 */
Function OutputDebug($message)
{
  echo $message,"
n";
}
Function GetLine()
{
  for($line="";;)
  {
   if(feof($this->connection))
   {
    $this->error="도달함" 소켓에서 읽는 동안 스트림 끝";
    return(0);
   }
   if(($data=fgets($this->connection,100))==false)
{
    $this->error="소켓에서 행을 읽을 수 없습니다.";
    return(0);
   }
   $line.=$data;
   $length =strlen($line);
   if($length>=2
   && substr($line,$length-2,2)=="rn")
   {
    $line=substr ($line,0,$length-2);
    if($this->debug)
     $this->OutputDebug("< $line");
    return($line);
   }
  }
}
함수 PutLine($line)
{
  if($this->debug )
   $this->OutputDebug("> $line");
  if(!fputs($this->connection,"$linern"))
  {
   $this- >error="소켓에 줄을 쓸 수 없습니다.";
   return(0);
  }
  return(1);
}
Function PutData($data)
{
  if(strlen($data))
  {
   if($this->debug)
    $this->OutputDebug("> $data");
   if(!fputs($this->connection,$data))
   {
    $this->error="소켓에 데이터를 쓸 수 없습니다.";
    return(0) ;
   }
  }
  return(1);
}
함수 verifyResultLines($code,$resp>{
  if(GetType($responses)!="array")
   $resp>  Unset($match_code);
  while(($line=$this->GetLine($this->connection)))
  {
   if(IsSet($match_code ))
   {
    if(strcmp(strtok($line," -"),$match_code))
    {
     $this->error=$line;
     return(0 );
    }
   }
   else
   {
    $match_code=strtok($line," -");
    if(GetType($code)=="array")
    {
     for($codes=0;$codes     if($codes>=count ($code))
     {
      $this->error=$line;
      return(0);
     }
    }
    else
    {
     if(strcmp($match_code,$code))
     {
      $this->error=$line;
      return(0);
}
    }
   }
   $responses[]=strtok("");
   if(!strcmp($match_code,strtok($line," ")))
    return(1 );
  }
  return(-1);
}
FlushRecipients() 함수
{
  if($this->pending_sender)
  {
   if ($this->VerifyResultLines("250")<=0)
    return(0);
   $this->pending_sender=0;
  }
  for(;$this- >pending_recipients;$this->pending_recipients--)
  {
   if($this->VerifyResultLines(array("250","251"))<=0)
    return( 0);
  }
  return(1);
}
/* 공개 메서드 */
Function Connect()
{
  $this->error=$ error="";
   $this->esmtp_host="";
   $this->esmtp_extensi>  if(!($this->c ? fsockopen($this->host_name,$this ->host_port,&$errno,&$error,$this->timeout) : fsockopen($this->host_name,$this->host_port))))
  {
   스위치($ error)
   {
    case -3:
     $this->error="-3 소켓을 생성할 수 없습니다.";
     return(0);
    case -4:
     $this->error="-4 호스트 이름 "".$host_name.""에 대한 DNS 조회 실패";
     return(0);
    case -5:
     $this->error ="-5 연결 거부 또는 시간 초과";
     return(0);
    case -6:
     $this->error="-6 fdopen() 호출 실패";
     return (0);
    case -7:
     $this->error="-7 setvbuf() 호출 실패";
     return(0);
    기본값:
     $this- >error=$error."는 호스트 "".$this->host_name.""";
     return(0);
   }
  }
  else
  {
   if(!strcmp($localhost=$this->localhost,"")
   && !strcmp($localhost=getenv("SERVER_NAME"),"")
   && !strcmp( $localhost=getenv("HOST"),""))
     $localhost="localhost";
    $success=0;
    if($this->VerifyResultLines("220")> 0)
    {
     if($this->esmtp)
     {
      $resp>      if($this->PutLine("EHLO $localhost")
      && $this- >VerifyResultLines("250",&$responses)>0)
      {
       $this->esmtp_host=strtok($responses[0]," ");
       for($resp> {
        $extension=strtoupper(strtok($responses[$response]," "));
        $this->esmtp_extensions[$extension]=strtok("");
       }
$success=1;
      }
     }
     if(!$success
     && $this->PutLine("HELO $localhost")
     && $this->VerifyResultLines(" 250")>0)
      $success=1;
   }
   if($success)
   {
    $this->state="Connected";
    return( 1);
   }
   else
   {
    fclose($this->connection);
    $this->c>    $this->state="Disconnected";
    return(0);
   }
  }
}
함수 MailFrom($sender)
{
  if(strcmp($this->state,"Connected"))
  {
   $this->error="연결이 초기 상태가 아닙니다";
   return(0);
  }
  $this->error="";
  if(!$ this->PutLine("메일 보낸 사람: <".$sender.">"))
   return(0);
  if(!IsSet($this->esmtp_extensions["PIPELINING"] )
  && $this->VerifyResultLines("250")<=0)
   return(0);
  $this->state="SenderSet";
  if(IsSet( $this->esmtp_extensions["PIPELINING"]))
   $this->pending_sender=1;
  $this->pending_recipients=0;
  return(1);
}
함수 SetRecipient($recipient)
{
  switch($this->state)
  {
   case "SenderSet":
   case "RecipientSet":
    break;
   기본값:
    $this->error="연결이 수신자 설정 상태가 아닙니다.";
    return(0);
  }
  $this->error="";
  if(!$this->PutLine("RCPT TO:<".$recipient.">"))
   return(0);
  if(IsSet($this-> esmtp_extensions["PIPELINING"]))
  {
   $this->pending_recipients ;
   if($this->pending_recipients>=$this->maximum_piped_recipients)
   {
    if (!$this->FlushRecipients())
     return(0);
   }
  }
  else
  {
   if($this->VerifyResultLines(array(" 250","251"))<=0)
    return(0);
  }
  $this->state="RecipientSet";
  return(1);
}
함수 StartData()
{
  if(strcmp($this->state,"RecipientSet"))
  {
   $this->error="연결이 다음 위치에 있지 않습니다. 데이터 전송 시작 ​​상태";
   return(0);
  }
  $this->error="";
  if(!$this->PutLine("DATA"))
   return(0);
  if($this->pending_recipients)
  {
   if(!$this->FlushRecipients())
    return(0);
}
  if($this->VerifyResultLines("354")<=0)
   return(0);
  $this->state="SendingData";
  return(1 );
}
PrepareData($data,&$output) 함수
{
  $length=strlen(&$data);
  for($output="",$position= 0;$position<$length;)
  {
   $next_position=$length;
   for($current=$position;$current<$length;$current )
   {
    스위치 ($data[$current])
    {
     case "n":
      $next_position=$current 1;
      break 2;
     case "r":
      $next_position= $current 1;
      if($data[$next_position]=="n")
       $next_position ;
      break 2;
    }
   }
   if($data[$ position]==".")
    $output.=".";
   $output.=substr(&$data,$position,$current-$position)."rn";
   $ position=$next_position;
  }
}
함수 SendData($data)
{
  if(strcmp($this->state,"SendingData"))
  {
   $this->error="연결이 데이터 전송 상태가 아닙니다";
   return(0);
  }
  $this->error="";
  return( $this->PutData(&$data));
}
함수 EndSendingData()
{
  if(strcmp($this->state,"SendingData"))
  {
   $this->error="연결이 데이터 상태 전송 중";
   return(0);
  }
  $this->error="";
  if(!$this->PutLine("rn.")
  || $this->VerifyResultLines("250")<=0)
   return(0);
  $this->state="Connected";
  return(1);
}
함수 ResetConnection()
{
  switch($this->state)
  {
   case "Connected":
    return(1);
   case "SendingData":
    $this->error="데이터를 보내는 동안 연결을 재설정할 수 없습니다.";
    return(0);
   case "Disconnected":
    $this->error ="연결이 설정되기 전에는 연결을 재설정할 수 없습니다.";
    return(0);
  }
  $this->error="";
  if(!$this->PutLine ("RSET")
  || $this->VerifyResultLines("250")<=0)
   return(0);
  $this->state="Connected";
  return(1);
}
기능 연결 끊기($quit=1)
{
  if(!strcmp($this->state,"Disconnected"))
  {
   $this->error="이전에 SMTP 연결이 설정되지 않았습니다.";
   return(0);
  }
  $this->error="";
  if( !strcmp($this->state,"Connected")
  && $quit
  && (!$this->PutLine("QUIT")
  || $this->VerifyResultLines("221")<=0))
   return(0);
  fclose($this->connection);
  $this->c>  $this ->state="Disconnected";
  return(1);
}
함수 SendMessage($sender,$recipients,$headers,$body)
{
  if(($ 성공=$this->Connect()))
  {
   if(($success=$this->MailFrom($sender)))
   {
    for($recipient=0 ;$recipient    {
     if(!($success=$this->SetRecipient($recipients[$recipient])))
      break;
    }
    if($success
    && ($success=$this->StartData()))
    {
     for($header_data="",$header=0;$header< count($headers);$header )
      $header_data.=$headers[$header]."rn";
     if(($success=$this->SendData($header_data."rn") ))
     {
      $this->PrepareData($body,&$body_data);
      $success=$this->SendData($body_data);
     }
     if( $success)
      $success=$this->EndSendingData();
    }
   }
   $disc>   if($success)
    $success=$disconnect_success;
  }
  return($success);
}
};
?>

以上就介绍了she is my sin gtp smtp邮件发送一例,包括了she is my sin gtp면적内容,希望对PHP教程有兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.