코드 복사 코드는 다음과 같습니다.
/*
* php smtp 이메일 보내기 Scoket 클래스
* ZhozPhpSmtpSendMail.php
* 작성일: 2008/09/02 zhoz.com
* @author zhoz
* v 1.72 업데이트 2008/09/26 zhoz.Com
*/
class ZhozPhpSmtpSendMail {
//도메인 이름 또는 IP 주소일 수 있는 SMTP 서버 공급자
var $smtp = "";
//SMTP는 인증이 필요하며 값을 1로 설정하고 인증이 필요하지 않으면 값이 0입니다. 이제 대부분의 SMTP 서비스 제공업체에서 확인을 요구합니다. 귀하의 smtp 서비스 제공 업체가 연결됩니다.
var $check = 1;//이메일 계정 이름
var $username = ""
//이메일 비밀번호
var $password = "" >/ /이 이메일은 보내는 서버의 이메일이어야 합니다
var $s_from = ""
/*
* 기능: 보내기 초기화 설정
* $from your 보내는 이메일衿이 회사인가요? ?
* $password 이메일 비밀번호
* $smtp SMTP 서버 공급자(도메인 이름 또는 IP 주소일 수 있음)
* $check SMTP에는 인증이 필요합니다. 값은 1입니다. 0이어야 합니다. 대부분의 SMTP 서비스 제공업체는 이제 확인을 요구합니다.
*/
function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match(" /^[^ d-_][w-]*[^-_]@[^-][a-zA-Zd-] [^-](.[^-][a-zA-Zd-]* [^-] )*.[a-zA-Z]{2,3}/", $from ) ) {
$this->username = substr( $from, 0, strpos( $from , " @" ) ) ;
$this->password = $password;
$this->smtp = $smtp : $this->check = $check;
$this->s_from = $from;
}
}
/*
* 기능: 이메일 보내기
* $to 대상 이메일 주소
* $from 소스 이메일 주소
* $subject 이메일 제목
* $message 이메일 내용
*/
function zhoz_send ($to, $from, $subject, $message) {
//서버 연결
$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60)
if (!$fp ) return "서버 연결 실패".__LINE__
set_socket_blocking( $fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "오류 메시지 1:$lastmessage".__LINE__;
//HELO
$yourname = "YOURNAME";
if($this->check == "1") $lastact="EHLO ".$yourname."rn"; else $lastact="HELO ".$yourname."rn";
fputs($fp, $lastact)
$lastmessage == fgets($fp,512)
if (substr($ lastmessage,0,3) != 220 ) return "오류 메시지 2:$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512)
if ( substr($lastmessage,3,1) != "-") 또는 (emptyempty($lastmessage)) )
break
}
//인증
if ($this-> 확인 =="1") {
//확인 시작
$lastact="AUTH LOGIN"."rn"
fputs( $fp, $lastact)
$lastmessage = fgets( $ fp,512);
if (substr($lastmessage,0,3) != 334) return "오류 메시지 3:$lastmessage".__LINE__
//사용자 이름
$lastact=base64_encode ( $this->username)."rn";
fputs( $fp, $lastact)
$lastmessage = fgets ($fp,512)
if (substr($lastmessage,0 , 3) != 334) return "오류 메시지 4:$lastmessage".__LINE__;
//사용자 비밀번호
$lastact=base64_encode($this->password)."rn"
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512)
if (substr($lastmessage,0,3) != "235") return "오류 메시지 5:$lastmessage" .__LINE__;
}
//FROM:
$lastat="메일 보낸 사람: <". $this->s_from . ">rn"
fputs( $fp, $ lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "오류 메시지 6:$lastmessage"
//TO:
$lalast="RCPT TO: <". $to ."> rn"
fputs( $fp, $lalastact)
$lastmessage = fgets($fp , 512);
if (substr($lastmessage,0,3) != 250) return "오류 메시지 7:$lastmessage".__LINE__
//DATA
$lastat="DATArn"; 🎜>fputs($fp, $lastat);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "오류 메시지 8: $ lastmessage".__LINE__;
//제목 헤더 처리 중
$head="제목: $subjectrn";
$message = $head."rn".$message;
//헤드에서 처리 중
$head="보낸 사람: $fromrn";
$message = $head.$message
//처리하는 중
$head="받는 사람: $torn"; message = $head.$message;
//끝 문자열 추가
$message .= "rn.rn"
//메시지 보내기
fputs($fp, $message); 🎜>$lastact="QUITrn";
fclose($fp);
error_log("보내기------>확인!!",
return true; 🎜>}
}
?>
/*
* php smtp 이메일 보내기 Scoket 클래스
* ZhozPhpSmtpSendMail.php
* 작성일 2008 / 09/02 zhoz.com
* @author zhoz
* v 1.72 업데이트 2008/09/26 zhoz.Com
*/
class ZhozPhpSmtpSendMail {
//SMTP 서버 제공 공급자, 도메인 이름 또는 IP 주소일 수 있습니다.
var $smtp = "";//SMTP에는 인증이 필요하며 값을 1로 설정하고 인증이 필요하지 않습니다. 현재 대부분의 SMTP 서비스 제공업체 인증이 필요합니다. 확실하지 않은 경우 smtp 서비스 제공업체에 문의하세요.
var $check = 1;//이메일 계정 이름
var $username = ""
//이메일 비밀번호
var $password = "" >/ /이 이메일은 보내는 서버의 이메일이어야 합니다.
var $s_from = "";/*
* 기능: 초기화 설정 보내기
* 보내는 서버의 $from 이메일
* $password 이메일 비밀번호
* $smtp 도메인 이름 또는 IP 주소일 수 있는 SMTP 서버 공급자
* $check SMTP에 인증이 필요합니다. 값은 0입니다. . 대부분의 SMTP 서비스 제공업체는 이제 확인을 요구합니다.
*/
function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match("/^[ ^d-_] [w-]*[^-_]@[^-][a-zA-Zd-] [^-](.[^-][a-zA-Zd-]*[^- ])*.[ a-zA-Z]{2,3}/", $from ) ) {
$this->username = substr( $from, 0, strpos( $from , "@" ) );
$this->password = $password;
$this->smtp = $smtp : $this->check = $check ; this->s_from = $from;
}
}
/*
* 기능: 이메일 보내기
* $to 대상 이메일 주소
* $from 소스 이메일
* $subject 이메일 제목
* $message 이메일 내용
*/
function zhoz_send ($to, $from, $subject, $message) {
//서버에 연결
$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "서버 연결 실패".__LINE__>set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "오류 메시지 1:$lastmessage"
/ /HELO
$yourname = "YOURNAME";
if($this->check == "1") $lastact="EHLO ".$yourname."rn"
else $lastat = "HELO ".$yourname."rn";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512)
if (substr($lastmessage,0 , 3) != 220 ) return "오류 메시지 2:$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512)
if ( (substr($ lastmessage) ,3,1) != "-") 또는 (비어 있음($lastmessage)) )
break
}
//인증
if ($this->check== "1 ") {
//확인 시작
$lastact="AUTH LOGIN"."rn";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp, 512) ;
if (substr($lastmessage,0,3) != 334) return "오류 메시지 3:$lastmessage".__LINE__
//사용자 이름
$lastact=base64_encode($this -> ;사용자 이름)."rn";
fputs( $fp, $lastact)
$lastmessage = fgets ($fp,512)
if (substr($lastmessage,0,3) != 334) return "오류 메시지 4:$lastmessage".__LINE__;
//사용자 비밀번호
$lastat=base64_encode($this->password)."rn"
fputs( $fp , $ lastact); $lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != "235") return "오류 메시지 5:$lastmessage".__LINE__ ; 🎜>}
//FROM:
$lastat="MAIL FROM: <". $this->s_from . ">rn"
fputs( $fp, $lastat)
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "오류 메시지 6:$lastmessage".__LINE__>// TO:
$lastact="RCPT 대상: <". $to ."> rn"
fputs( $fp, $lastact)
$lastmessage = fgets ($fp,512)
if (substr($lastmessage,0,3) != 250) return "오류 메시지 7:$lastmessage".__LINE__;
//DATA
$lastat="DATArn"
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "오류 메시지 8:$lastmessage" .__LINE__ ;
//제목 헤더 처리
$head="Subjectrn";
$message = $head."rn".$message
//From 헤더 처리
$head="보낸 사람: $fromrn";
$message = $head.$message;
//대상 헤더 처리
$head="받는 사람: $torn"
$message = $head.$message;//끝 문자열 추가
$message .= "rn.rn"
//메시지 보내기
fputs($fp, $message); $lastact="QUITrn";
fclose($fp);
error_log("보내기------>확인!!", 0); }
}
?>
테스트 방법은 동일합니다.
코드를 보기 위해 코드를 복사하고 🎜>$from = 'zhoz@zhoz.com'; // 보내는 서버의 이메일 주소
$password = 'zhoz' // 이메일 비밀번호
$smtp = 'smtp.zhoz.com'; // 도메인 이름 또는 IP 주소일 수 있는 SMTP 서버 공급자
// 클래스 초기화
$zhoz_obj = new ZhozPhpSmtpSendMail($ from, $password, $smtp)
// 보내기 시작
$status = $zhoz_obj->zhoz_send("zhoz008@126.com", "zhoz@zhoz.com", "제목은 zhoz입니다." , "본문은 zhoz.com");
if( $status) {
echo $status
echo "no---------"
} else 🎜>echo "send ok--------- --------! "
die
}
// 결과는 당연합니다: send ok-- ---------------!
?>
위 내용은 aphex Twin의 내용을 포함하여 win에서 이메일을 보내는 aphex Twin PHP 소켓 방법을 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.