그녀는 내 죄입니다 gtp smtp 이메일 전송 예
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
{
$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教程有兴趣的朋友有所帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.
