> 백엔드 개발 > PHP 튜토리얼 > 자세한 설명 자세한 설명이 포함된 모든 기능을 갖춘 PHP 메일 전송 코드

자세한 설명 자세한 설명이 포함된 모든 기능을 갖춘 PHP 메일 전송 코드

WBOY
풀어 주다: 2016-07-29 08:38:23
원래의
910명이 탐색했습니다.

class Email {
//---전역 변수 설정
var $mailTo = ""; // 수신자
var $mailCC = "" // CC
var $mailBCC = ""; // 비밀 참조
var $mailFrom = ""; // 보낸 사람
var $mailSubject = ""; // 제목
var $mailText = ""; format letter body
var $mailHTML = ""; // HTML 형식의 letter body
var $mailAttachments = ""; // 첨부파일
/* 함수 setTo($inAddress ): 이메일 처리에 사용되는 주소 매개변수 $inAddress
하나 이상의 문자열, 이메일 주소 변수를 포함합니다. 여러 이메일 주소를 구분하려면 쉼표를 사용하세요.
기본 반환 값은 true입니다.
**** *********** **************************************** ****/
기능 설정 ($inAddress){
//--explosion() 함수를 사용하여 ","를 기준으로 이메일 주소를 분할합니다.
$addressArray =explore( ",",$inAddress )//- -
for($i=0;$icheckEmail ($addressArray[$i])= 루프를 통해 이메일 주소의 유효성을 확인하세요. =false) return false }
//--모든 합법적인 이메일 주소는
$this->mailTo = implode($addressArray, "," ; Split
$addressArray =explore에 저장됩니다. ( ",",$inAddress);
//-루프를 통해 이메일 주소의 유효성을 확인하세요
for($i=0;$icheckEmail($addressArray[$i])==false) return false }
//--모든 합법적인 이메일 주소는
배열에 저장됩니다. $this->mailCC = implode($ addressArray, ",");
return true; }
/************************************************
기능 setCC($inAddress)는 참조 복사자의 이메일 주소를 설정합니다.
$inAddress 매개변수는 하나 이상의 이메일 주소, 이메일 주소 변수를 포함하는 문자열입니다.
여러 이메일 주소를 구분하려면 쉼표를 사용하세요. 값이 true
******************************************** **** ****************/
function setBCC($inAddress){
// --Explode() 함수를 사용하여 분할 ","를 기반으로 한 이메일 주소
$addressArray =explore( ",",$inAddress)
//--루프를 통해 이메일 주소의 합법성을 확인합니다.
for($i=0; $i{ if($this->checkEmail($addressArray[$i])==false)
return false
}
/ /--모든 합법적인 이메일 주소는
$this->mailBCC = implode($addressArray, ",")
return true
}
/*************************************************
함수 setBCC($inAddress)는 비밀 복사 주소를 설정합니다. $inAddress 매개변수는 하나 이상의
이메일 주소를 포함하는 문자열입니다. 이메일 주소 변수는 쉼표를 사용하여 여러 이메일 주소를 구분합니다. > 사실
************************************************ **/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $ inAddress
return true; 🎜>} return false }
/**************************************************** * *************
함수 setFrom($inAddress): 이메일을 포함하도록 보낸 사람 주소 매개변수 $inAddress를 설정합니다.
주소 문자열의 기본 반환 값은 true입니다.
* **************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$ this->mailSubject = ereg_replace( "n", "",$inSubject);
return true }
return false }
/************************
setSubject($inSubject) 함수는 이메일 제목 매개변수 $inSubject를 문자열로 설정하는 데 사용됩니다.
기본 반환 값은 true
*******************************************/
function setText( $inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
return true;
return false; >}
/************************************
함수 setHTML($inHTML)은 이메일 본문 매개변수 $inHTML을 설정합니다. html 형식으로 html 형식으로 되어 있으며,
기본 반환 값은 true
******************************** **************/
함수 setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $ inHTML;
true 반환 }
false 반환 }
/**************************
함수 setAttachments($inAttachments)는 이메일의 첨부 파일을 설정합니다. 매개변수 $inAttachments
는 다음을 포함하는 문자열입니다. 여러 파일은 쉼표로 구분됩니다. 기본 반환 값은 true
************************** ************** ********/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return true; }
return false }
/*******************************
함수 checkEmail($inAddress): 이전에 이 함수를 이미 호출한 적이 있습니다. 주로
이메일 주소의 적법성을 확인하는 데 사용됩니다
************************************ ** ***/
function checkEmail($ inAddress){
return (ereg( "^[^@ ] @([a-zA-Z0-9-] .) ([a-zA-Z0-9-]{2}|net|com|gov |mil|org|edu|int)$",$inAddress));
}
/*************************************************
loadTemplate($inFileLocation,$inHash,$inFormat) 함수는 임시 파일을 읽고
쓸데없는 정보 매개변수를 대체합니다. $inFileLocation은 파일의 디렉터리를 찾는 데 사용됩니다.
$inHash는 임시 값 $를 저장하는 데 사용됩니다. inFormat은 이메일 본문을 배치하는 데 사용됩니다.
****************************************** ********* ***********/
함수 loadTemplate($inFileLocation,$inHash,$inFormat){
/* 예를 들어 이메일에는 다음 내용이 포함되어 있습니다. Dear ~!UserName~,
귀하의 주소는 ~!UserAddress~입니다. */
//--여기서 "~!"는 시작 표시이고 "~ "는 끝 표시입니다.
$templateDelim = "~";
$templateNameStart = "!";
//--이 위치를 찾아 교체하세요.
$templateLineOut = ""; //- -임시 파일 열기
if($templateFile = fopen($inFileLocation, "r")){
while(!feof($templateFile)){
$templateLine = fgets($templateFile,1000);
$templateLineArray =explore($templateDelim,$templateLine)
for( $i=0; $i//-시작 위치 찾기
if(strcspn($templateLineArray[$i],$templateNameStart)==0){
//--해당 값 바꾸기
$hashName = substr($templateLineArray[$i],1);
//--해당 값 바꾸기
$templateLineArray[$i] = ereg_replace($hashName,(string)$inHash[$hashName],$hashName)
}
}
/ /--문자 배열 및 오버레이 출력
$templateLineOut .= implode($templateLineArray, "")
} //--파일을 닫습니다.
//- 본문 형식 설정(텍스트 또는 html)
if( strtoupper($inFormat)== "TEXT" )
return($this->setText($templateLineOut))
else if( strtoupper( $inFormat)= "HTML" )
return($this->setHTML($templateLineOut))
} return false
}
/*****************************************
getRandomBoundary($offset) 함수는 다음을 반환합니다. 무작위 경계 값
$offset 매개변수는 정수입니다. 다중 파이프라인 호출에 사용되며 md5()로 인코딩된 문자열을 반환합니다.
******************** *** **********************/
function getRandomBoundary( $offset = 0){
//-난수 생성
srand(time() $offset)
//-md5로 인코딩된 32비트 문자 길이 문자열 반환
return ( "----".(md5(rand()))) }
/******************************************
함수: getContentType($ inFileName) 첨부 파일 유형을 결정하는 데 사용됩니다.
***************************************** *** *****/
function getContentType($inFileName){
//-제거 path
$inFileName = basename($inFileName);
//--확장자가 없는 파일 제거
if(strrchr($inFileName, ".") == false){
return "application/ 옥텟 스트림";

//--提区扩개명 并进行判断 
$extension = strrchr($inFileName, "."); 
스위치($extension){ 
case ".gif": return "image/gif"; 
case ".gz": "application/x-gzip"을 반환합니다. 
case ".htm": return "text/html"; 
case ".html": return "text/html"; 
case ".jpg": return "image/jpeg"; 
case ".tar": "application/x-tar"를 반환합니다. 
case ".txt": "text/plain"을 반환합니다. 
case ".zip": "application/zip"을 반환합니다. 
기본값: "application/octet-stream"을 반환합니다. 

"application/octet-stream"을 반환합니다. 

/**************************************************
함수 형식TextHeader 텍스트 내용과 텍스트 파일 헤더
************************************** **** **************/ 
함수 formatTextHeader(){ $outTextHeader = ""; 
$outTextHeader .= "콘텐츠 유형: text/plain; 
charset=us-asciin"; 
$outTextHeader .= "콘텐츠 전송-인코딩: 7bitnn"; 
$outTextHeader .= $this->mailText. "N"; 
$outTextHeader를 반환합니다. 
} /************************************************
기능 formatHTMLHeader()는 html 파일 헤더를 이메일 본문 내용에 추가합니다.
********************************** ********/ 
함수 formatHTMLHeader(){ 
$outHTMLHeader = ""; 
$outHTMLHeader .= "콘텐츠 유형: text/html; 
charset=us-asciin"; 
$outHTMLHeader .= "콘텐츠 전송 인코딩: 7bitnn"; 
$outHTMLHeader .= $this->mailHTML. "N"; 
$outHTMLHeader를 반환합니다. 

/**************************************
formatAttachmentHeader($inFileLocation) 함수는 첨부 파일을 식별합니다. 이메일
*************************************/ 
함수 형식AttachmentHeader($inFileLocation){ 
$outAttachmentHeader = "";  //--如果附件是文本型则用标准的7位编码 
if(ereg( "text",$contentType)){ 
$outAttachmentHeader .= "Content-Type: ".$ contentType. ";N"; 
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "N"; 
$outAttachmentHeader .= "콘텐츠 전송 인코딩: 7bitn"; 
$outAttachmentHeader .= "콘텐츠 처리: 첨부 파일;n"; 
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn"; 
$textFile = fopen($inFileLocation, "r"); 
while(!feof($textFile)){ 
$outAttachmentHeader .= fgets($textFile,1000); 

//--关闭文件 fclose($textFile); 
$outAttachmentHeader .= "n"; 

//--비文本格式则用64位进行编码 
else{ $outAttachmentHeader .= "콘텐츠 유형:".$contentType. ";N"; 
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "N"; 
$outAttachmentHeader .= "콘텐츠 전송 인코딩: base64n"; 
$outAttachmentHeader .= "콘텐츠 처리: 첨부 파일;n"; 
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn"; 
//--调用외부命令uuencode进行编码 
exec( "uuencode -m $inFileLocation nothing_out",$returnArray); 
($i = 1; $i<(count($returnArray)); $i ){ 
$outAttachmentHeader .= $returnArray[$i]. "N"; 

} $outAttachmentHeader를 반환합니다. 
}
/******************************
send() 함수는 이메일을 보내는 데 사용되며, 성공적으로 전송되면 반환 값은 true입니다.
* *************************************/
function send(){
//--이메일 헤더를 비우도록 설정
$mailHeader = ""
//-CC 추가; 사람들
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC. "n"
//-비밀 사본 추가; 넘겨주세요
if($this->mailBCC != "")
$mailHeader .= "BCC: ".$this->mailBCC
//-추가 보내기
if($this->mailFrom != "")
$mailHeader .= "FROM: ".$this->mailFrom "n"
//---- ----------이메일 형식------------ -----
//--텍스트 형식
if($this->mailText != "" && $this->mailHTML == "" && $this->mailAttachments == " "){
return mail($this->mailTo,$this->mailSubject,$this->mailText,$mailHeader);
}
//--html 또는 텍스트 형식
else if($this->mailText != "" && $this->mailHTML != "" && $this->mailAttachments == ""){
$bodyBoundary = $this-> getRandomBoundary();
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader()
//-MIME 버전 설정
$mailHeader .= "MIME 버전: 1.0n";
$mailHeader .= "콘텐츠 유형: multipart/alternative;n"
$mailHeader .= 'boundary="'.$bodyBoundary.'"';
$mailHeader .= "nnn";
//-이메일 본문 및 경계 추가
$mailHeader .= "--".$bodyBoundary.
$mailHeader .= $ textHeader;
$mailHeader .= "--".$bodyBoundary. "n";
//-html 태그 추가
$mailHeader .= $mailHeader; --".$bodyBoundary. "--";
//--메일 보내기
return mail($this->mailTo,$this->mailSubject, "",$mailHeader);
}
//--텍스트와 HTML, 첨부 파일
else if($this->mailText != "" && $this->mailHTML != "" && $this->mailAttachments != ""){
$attachmentBoundary = $this->getRandomBoundary();
$mailHeader .= "Content-Type: multipart/mixed;n"
$mailHeader .= 'boundary="' .$attachmentBoundary. '"'. "nn";
$mailHeader .= "MIME 형식의 다중 부분 메시지입니다.n";
$mailHeader .= "--".$attachmentBoundary. " n";
$bodyBoundary = $this->getRandomBoundary(1);
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
$mailHeader .= "MIME 버전: 1.0n";
$mailHeader .= "콘텐츠 유형: multipart/alternative;n"
$mailHeader .= 'boundary="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader . = "--".$bodyBoundary."n";
$mailHeader .= $htmlHeader .= "n--".$bodyBoundary.
//- -첨부 파일 값 가져오기
$attachmentArray =explore( ",",$this->mailAttachments)
//-첨부 파일 수에 따라 반복
for($i=0;$ i< ;count($attachmentArray);$i ){
//-$mailHeader 분할 .= "n--".$attachmentBoundary. "n"
//--첨부파일 정보
$ mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary.
return mail($this - >mailTo,$this->mailSubject, "",$mailHeader)
}
return false
}
}
?> >


코드 복사

코드는 다음과 같습니다.


“email.class” 포함
$mail->setTo("a@a.com") //수신자
$mail-> "b@b.com,c@c.com"); //복사
$mail-> setCC("d@b.com,e@c.com") //비밀로 복사
$mail->setFrom("f@f.com");//발신자
$mail->setSubject("제목") //제목
$mail-> ;setText("text format");//보내는 텍스트 형식도 변수일 수 있습니다
$mail->setHTML("html format");//보내는 html 형식도 변수일 수 있습니다
$mail-> ;setAttachments( "c:a.jpg");//첨부파일 추가, 경로를 지정해야 함
$mail->send() //이메일 보내기
?>

위에서는 자세한 지침을 소개합니다. 이메일 전송을 위한 완전한 기능의 PHP 코드가 자세한 지침을 포함하여 첨부되어 있습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿