이 기사의 예에서는 PHP가 소켓을 기반으로 이메일을 보내기 위해 SMTP를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
php는 소켓을 사용하여 SMTP를 통해 이메일을 보냅니다.
php의 php-sockets 확장을 사용하면 일반 텍스트 및 html 형식으로 이메일을 보낼 수 있습니다. 코드는 다음과 같습니다.
/**
* 이메일 보내기 수업
* 일반 텍스트 이메일 및 HTML 형식 이메일 전송 지원
* @예제
* $config = 배열(
* "from" => "*****",
* "에" => "***",
* "주제" => "테스트",
* "본문" => "테스트",
* "사용자 이름" => "***",
* "비밀번호" => "****",
* "isHTML" => 참
* );
*
* $mail = 새로운 MySendMail();
*
* $mail->setServer("smtp.126.com");
*
* $mail->setMailInfo($config);
* if(!$mail->sendMail()) {
* echo $mail->error();
* 1을 반환;
* }
*/
MySendMail 클래스 {
/**
* @var 메일 전송 에이전트 사용자 이름
* @액세스 비공개
*/
개인 $_userName;
/**
* @var 메일 전송 에이전트 비밀번호
* @액세스 비공개
*/
개인 $_password;
/**
* @var 메일 전송 프록시 서버 주소
* @접속 보호됨
*/
보호된 $_sendServer;
/**
* @var 메일 전송 프록시 서버 포트
* @접속 보호됨
*/
보호됨 $_port=25;
/**
* @var 발신자
* @접속 보호됨
*/
$_from;
보호됨 /**
* @var 수신자
* @접속 보호됨
*/
보호된 $_to;
/**
* @var 테마
* @접속 보호됨
*/
보호된 $_subject;
/**
* @var 이메일 내용
* @접속 보호됨
*/
보호된 $_body;
/**
* @var HTML 형식의 이메일인가요
* @접속 보호됨
*/
보호됨 $_isHTML=false;
/**
* @var 소켓 리소스
* @접속 보호됨
*/
보호된 $_socket;
/**
* @var 오류 메시지
* @접속 보호됨
*/
보호된 $_errorMessage;
공개 함수 __construct($from="", $to="", $subject="", $body="", $server="", $username="", $password="",$isHTML=" ", $port="") {
if(!empty($from)){
$this->_from = $from;
}
if(!empty($to)){
$this->_to = $to;
}
if(!empty($subject)){
$this->_subject = $subject;
}
if(!empty($body)){
$this->_body = $body;
}
if(!empty($isHTML)){
$this->_isHTML = $isHTML;
}
if(!empty($server)){
$this->_sendServer = $서버;
}
if(!empty($port)){
$this->_port = $port;
}
if(!empty($username)){
$this->_userName = $username;
}
if(!empty($password)){
$this->_password = $password;
}
}
/**
* 메일 전송 에이전트 설정
* @param string $server 프록시 서버의 IP 또는 도메인 이름
* @param int $port 프록시 서버의 포트, SMTP 기본 포트 25
* @param int $localPort 로컬 포트
* @return 부울
*/
공용 함수 setServer($server, $port=25) {
if(!isset($server) || 비어 있음($server) || !is_string($server)) {
$this->_errorMessage = "첫 번째 매개변수가 유효하지 않습니다.";
false를 반환합니다.
}
if(!is_numeric($port)){
$this->_errorMessage = "처음 두 개는 잘못된 매개변수입니다.";
false를 반환합니다.
}
$this->_sendServer = $서버;
$this->_port = $port;
true를 반환합니다.
}
/**
* 이메일 설정
* @접속공개
* @param array $config 이메일 구성 정보
* 이메일 발신자, 수신자, 제목, 내용, 이메일 전송 담당자의 확인 정보가 포함되어 있습니다
* @return 부울
*/
공개 함수 setMailInfo($config) {
if(!is_array($config) || count($config) $this->_errorMessage = "매개변수가 필요합니다";
false를 반환합니다.
}
$this->_from = $config['from'];
$this->_to = $config['to'];
$this->_subject = $config['subject'];
$this->_body = $config['body'];
$this->_userName = $config['사용자 이름'];
$this->_password = $config['password'];
if(isset($config['isHTML'])){
$this->_isHTML = $config['isHTML'];
}
true를 반환합니다.
}
/**
* 이메일 보내기
* @접속공개
* @return 부울
*/
공개 함수 sendMail() {
$command = $this->getCommand();
$this->소켓();
foreach($command를 $value로) {
if($this->sendCommand($value[0], $value[1])) {
계속;
}
그렇지 않으면{
false를 반환합니다.
}
}
$this->close(); //其实这里也没必要关闭,smtp命令:QUIT发信后,服务器就关闭了连接,本地적소켓资源会自动释放
echo '메일 OK!';
true를 반환합니다.
}
/**
* 반환 오류 메시지
* @return 문자열
*/
공개 함수 오류(){
if(!isset($this->_errorMessage)) {
$this->_errorMessage = "";
}
$this->_errorMessage;
반환 }
/**
* 메일 명령어로 돌아가기
* @접속 보호됨
* @return 배열
*/
보호된 함수 getCommand() {
if($this->_isHTML) {
$mail = "MIME 버전:1.0rn";
$mail .= "콘텐츠 유형:텍스트/html;charset=utf-8rn";
$mail .= "FROM:테스트_from . ">rn";
$mail .= "받는 사람:_to . ">rn";
$mail .= "제목:" . $this->_subject ."rnrn";
$mail .= $this->_body . "rn.rn";
}
그렇지 않으면{
$mail = "FROM:테스트_from . ">rn";
$mail .= "받는 사람:_to . ">rn";
$mail .= "제목:" . $this->_subject ."rnrn";
$mail .= $this->_body . "rn.rn";
}
$명령 = 배열(
array("HELO sendmailrn", 250),
array("AUTH LOGINrn", 334),
array(base64_encode($this->_userName) . "rn", 334),
array(base64_encode($this->_password) . "rn", 235),
array("MAIL FROM:_from . ">rn", 250),
array("RCPT TO:_to . ">rn", 250),
array("DATArn", 354),
배열($mail, 250),
array("QUITrn", 221)
);
$명령을 반환하세요;
}
/**
* @접속 보호됨
* @param string $command 서버로 보낸 SMTP 명령
* @param int $code 서버에서 응답이 반환될 것으로 예상하십니까
* @param 부울
*/
보호된 함수 sendCommand($command, $code) {
echo '명령 보내기:' . $ 명령 . ',예상 코드:' . $코드 . '
';
//发送命令给服务器
시도해 보세요{
if(socket_write($this->_socket, $command, strlen($command))){
//读取服务器返回
$data = 트림(socket_read($this->_socket, 1024));
에코 '응답:' . $데이터 . '
';
if($data) {
$pattern = "/^".$code."/";
if(preg_match($pattern, $data)) {
true를 반환합니다.
}
그렇지 않으면{
$this->_errorMessage = "오류:" . $데이터 . "|**| 명령:";
false를 반환합니다.
}
}
그렇지 않으면{
$this->_errorMessage = "오류:" . 소켓_strerror(socket_last_error());
false를 반환합니다.
}
}
그렇지 않으면{
$this->_errorMessage = "오류:" . 소켓_strerror(socket_last_error());
false를 반환합니다.
}
}catch(예외 $e) {
$this->_errorMessage = "오류:" . $e->getMessage();
}
}
/**
* 서버에 네트워크 연결을 설정하세요
* @액세스 비공개
* @return 부울
*/
개인 함수 소켓() {
if(!function_exists("socket_create")) {
$this->_errorMessage = "php-socket 확장 기능을 활성화해야 합니다";
false를 반환합니다.
}
//소켓소켓
$this->_socket = 소켓_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
if(!$this->_socket) {
$this->_errorMessage = 소켓_strerror(socket_last_error());
false를 반환합니다.
}
//连接服务器
if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {
$this->_errorMessage = 소켓_strerror(socket_last_error());
false를 반환합니다.
}
소켓_read($this->_socket, 1024);
true를 반환합니다.
}
/**
* 소켓
* @액세스 비공개
* @return 부울
*/
개인 함수 close() {
if(isset($this->_socket) && is_object($this->_socket)) {
$this->_socket->close();
true를 반환합니다.
}
$this->_errorMessage = "가까울 수 있는 리소스가 없습니다.";
false를 반환합니다.
}
}
/**************************** 시험 *********************** ************/
$config = 배열(
"에서" => "XXXXX",
"에" => "XXXXX",
"주제" => "테스트",
"본체" => "테스트",
"사용자 이름" => "XXXXX",
"비밀번호" => "********",
//"isHTML" => 사실
);
$mail = 새로운 MySendMail();
$mail->setServer("smtp.126.com");
$mail->setMailInfo($config);
if(!$mail->sendMail()) {
echo $mail->error();
1을 반환;
}
希望本文所述对大家程序设计有所帮助。

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

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

PHP에서는 클론 키워드를 사용하여 객체 사본을 만들고 \ _ \ _ Clone Magic 메소드를 통해 클로닝 동작을 사용자 정의하십시오. 1. 복제 키워드를 사용하여 얕은 사본을 만들어 객체의 속성을 복제하지만 객체의 속성은 아닙니다. 2. \ _ \ _ 클론 방법은 얕은 복사 문제를 피하기 위해 중첩 된 물체를 깊이 복사 할 수 있습니다. 3. 복제의 순환 참조 및 성능 문제를 피하고 클로닝 작업을 최적화하여 효율성을 향상시키기 위해주의를 기울이십시오.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

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

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
