setCC("b@b.com,c@c.com "); //CC $mail"/> setCC("b@b.com,c@c.com "); //CC $mail">

>백엔드 개발 >PHP 튜토리얼 >내 어깨에 머리를 기대세요 완전한 기능을 갖춘 PHP 이메일 수업을 추천해 주세요

내 어깨에 머리를 기대세요 완전한 기능을 갖춘 PHP 이메일 수업을 추천해 주세요

WBOY
WBOY원래의
2016-07-29 08:36:05881검색

PHP--다음 클래스의 기능은 매우 강력합니다. HTML 형식으로 이메일을 보낼 수 있을 뿐만 아니라 첨부 파일도 보낼 수 있습니다
사용법:

코드 복사 코드는 다음과 같습니다.

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


코드 복사 코드는 다음과 같습니다.

class Email {
//---전역 변수 설정
var $mailTo = "" // 수신자
var $mailCC = "";
var $mailBCC = ""; // 비밀 참조
var $mailFrom = ""; // 보낸 사람
var $mailSubject = ""; // 제목
var $mailText = ""; // 텍스트 형식의 편지 본문
var $mailHTML = ""; // html 형식의 편지 본문
var $mailAttachments = ""; // 첨부 파일
/* 함수 setTo ($inAddress): 이메일 처리에 사용되는 주소 매개변수 $inAddress
하나 이상의 문자열, 이메일 주소 변수를 포함합니다. 여러 이메일 주소를 구분하려면 쉼표를 사용하세요.
기본 반환 값은 true입니다.
* *** ************************************************ ** *****/
function setTo($inAddress){
//--explosion() 함수를 사용하여 ","를 기준으로 이메일 주소를 분할합니다.
$addressArray =explore( "," ,$inAddress);
//--루핑을 통해 이메일 주소의 유효성을 확인하세요.
for($i=0;$i//--모든 합법적인 이메일 주소는
$this->mailTo = implode($addressArray, " ,");
return true; }
/************************************************
기능 setCC($inAddress)는 복사하는 사람의 이메일 주소를 설정합니다.
$inAddress 매개변수는 하나 이상의 이메일 주소, 즉 이메일 주소 변수를 포함하는 문자열입니다.
여러 이메일 주소를 구분하려면 기본값입니다. 반환 값은 true입니다.
********************************************* *** ****************/
function setCC($inAddress){
//--","에 따라Explode() 함수를 사용합니다. 이메일 주소 분할
$addressArray =explore( ",",$inAddress)
//--루프를 통해 이메일 주소의 유효성을 확인하세요.
for($i=0;$i< count($addressArray);$i ){ if($this->checkEmail($addressArray[$i])==false) return false }
//-모든 합법적인 이메일 주소가 배열에 저장됩니다.
$this->mailCC = implode($addressArray, ",");
return true }
/*************************************************
함수 setBCC($inAddress)는 비밀 복사본 주소를 설정합니다. $inAddress 매개변수는 하나 이상의
이메일 주소를 포함하는 문자열입니다. 이메일 주소 변수는 쉼표를 사용하여 여러 이메일 주소를 구분합니다. 사실
***********************************************/
function setBCC($inAddress){
//--explod() 함수를 사용하여 ","를 기준으로 이메일 주소를 분할합니다.
$addressArray =explore( ",",$inAddress)//--이메일 주소의 유효성 루프를 통해
for($i=0;$i{ if($this->checkEmail($addressArray[$i])==false) false 반환
} 
/**************************************************** * *************
함수 setFrom($inAddress): 이메일을 포함하도록 보낸 사람 주소 매개변수 $inAddress를 설정합니다.
주소 문자열의 기본 반환 값은 true입니다.
* **************************************/ 
function setFrom($inAddress){ 
if($this->checkEmail($inAddress)){ 
$this-> mailFrom = $inAddress
return true
} return false;   
/************************
setSubject($inSubject) 함수는 이메일 제목 매개변수 $inSubject를 문자열로 설정하는 데 사용됩니다.
기본 반환은 true
*******************************************/   
함수 setSubject($inSubject){   
if(strlen(trim($inSubject)) > 0){   
$this->mailSubject = ereg_replace ( "n", "",$inSubject);   
true를 반환합니다. }   
false를 반환합니다. }   
/**************************************************** *
setText($inText) 함수는 이메일 본문 매개변수를 텍스트 형식으로 설정합니다. $inText가 기본 텍스트 내용입니다.
반환 값은 true입니다.
**************** ***** ***********************/   
함수 setText($inText){   
if(strlen(trim($inText)) > 0){   
$this->mailText = $inText;   
true를 반환합니다. }   
false를 반환합니다.   
}   
/************************************
함수 setHTML($inHTML)은 이메일 본문 매개변수 $inHTML을 설정합니다. html 형식 html 형식의 경우
기본 반환 값은 true
********************************** **********/   
함수 setHTML($inHTML){   
if(strlen(trim($inHTML)) > 0){   
$this-> ;mailHTML = $inHTML;   
true를 반환합니다. }   
false를 반환합니다. }   
/**********************
함수 setAttachments($inAttachments)는 이메일의 첨부 파일을 설정합니다. 매개변수 $inAttachments
는 디렉터리를 포함하는 문자열입니다. 포함될 수도 있습니다. 여러 파일은 쉼표로 구분됩니다. 기본 반환 값은
*************************입니다. ******* ********/   
함수 setAttachments($inAttachments){   
if(strlen(trim($inAttachments)) > 0){   
$this->mailAttachments = $in첨부 파일;   
true를 반환합니다. }   
false를 반환합니다. }   
/*******************************
함수 checkEmail($inAddress): 이전에 이 함수를 이미 호출했습니다. 주로:
이메일 주소의 정당성을 확인하는 데 사용됩니다
********************************** *** **/   
함수 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 = explode($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, "")
} //--파일 닫기($templateFile); //- -본문 형식 설정(텍스트 또는 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비트 문자를 반환합니다. string
return ( "--".(md5(rand()))) }
/******************************************
함수: getContentType($ inFileName) 첨부 파일 유형을 결정하는 데 사용됩니다.
***************************************** *** *****/
function getContentType($inFileName){
// - -경로 제거
$inFileName = basename($inFileName);
//--확장자가 없는 파일 제거
if(strrchr($inFileName, ".") == false){
return "application/octet-stream";
}
//-영역 확장 제공 및 판단
$extension = strrchr($inFileName, ".")
switch($extension) ){
case ".gif": "image/gif" 반환;
case ".gz": "application/x-gzip" 반환
case ".htm": "text/html 반환 ";
case ".html": "text/html" 반환;
case ".jpg": "image/jpeg" 반환;
case ".tar": "application/x-tar 반환" ";
case ".txt": "text/plain" 반환;
case ".zip": "application/zip" 반환;
기본값: "application/octet-stream" 반환;
} 
return "application/octet-stream"; 
} 
/************************************************
기능 formatTextHeader 텍스트 내용과 텍스트 파일 헤더
**************************************** **************/ 
function formatTextHeader(){ $outTextHeader = """; "컨텐트 유형: 텍스트/일반;
charset=us-asciin";
$outTextHeader .= "컨텐트 전송-인코딩: 7bitnn"
$outTextHeader .= $this->mailText. "n";
return $outTextHeader;
} /************************************************
기능 formatHTMLHeader()는 html 파일 헤더를 이메일 본문 내용에 추가합니다.
********************************** ** ********/
function formatHTMLHeader(){
$outHTMLHeader = ""; =us-asciin";
$outHTMLHeader .= "콘텐츠 전송 인코딩: 7bitnn"; ;
return $outHTMLHeader;
}
/************************************
formatAttachmentHeader($inFileLocation) 함수는 이메일의 첨부 파일을 식별합니다.
*************************************/ 
function formatAttachmentHeader($inFileLocation){ 
$outAttachmentHeader = ""; 
//--첨부 파일을 가져오려면 위의 getContentType($inFileLocation) 함수를 사용하세요. type
$contentType = $this->getContentType($inFileLocation)
//--첨부 파일이 텍스트인 경우 표준 7비트 인코딩을 사용합니다.
if(ereg( "text",$ contentType) ){
$outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. n" ;
$outAttachmentHeader .= "콘텐츠 전송 인코딩: 7bitn";
$outAttachmentHeader .= "콘텐츠 처리: attachment;n";
$outAttachmentHeader .= ' filename="'. basename( $inFileLocation). '"'. "nn";
$textFile = fopen($inFileLocation, "r");
while(!feof($textFile)){
$outAttachmentHeader .= fgets( $textFile,1000);
}
//--파일을 닫습니다. fclose($textFile)
$outAttachmentHeader .=
}
//-- 텍스트가 아닌 형식 그런 다음 인코딩에 64비트를 사용합니다.
else{ $outAttachmentHeader .= "Content-Type: ".$contentType. ";n"
$outAttachmentHeader .= ' name="'.basename($ inFileLocation). ' "'. "n";
$outAttachmentHeader .= "콘텐츠 전송-인코딩: base64n";
$outAttachmentHeader .= "콘텐츠 처리: attachment;n";
$outAttachmentHeader .= ' filename ="'.basename($inFileLocation). '"'. "nn";
//-인코딩을 위한 외부 명령 uuencode 호출
exec( "uuencode -m $inFileLocation Nothing_out", $returnArray);
for ($i$outAttachmentHeader .= $returnArray[$i]
}
} return $outAttachmentHeader;
}
/******************************
send() 함수는 이메일을 보내는 데 사용되며, 보내면 반환 값은 true입니다. 성공적으로
* *************************************/
function send(){
//--이메일 헤더를 비워두도록 설정
$ mailHeader = "";
//--CC 추가:
if($this->mailCC != "")
$mailHeader .= "CC: ".$this->mailCC. "n";
//--비밀 사본 사람 추가  
if($this->mailBCC != "")  
$mailHeader .= "BCC: ".$this->mailBCC. "n";  
//-발신자 추가
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 .= "Content-Type: multipart/alternative;n"
$mailHeader .= ' 경계="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
//--이메일 본문 및 경계 추가
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary. "n"
//--html 태그 추가
$mailHeader $htmlHeader
$mailHeader .= "n--".$bodyBoundary. "--"
//--메일 보내기
메일 반환($this->mailTo,$this-> ;mailSubject, "",$mailHeader)
}
//-텍스트와 html, 첨부 파일
else if($this->mailText != "" && $this->mailHTML ! = "" && $this->mailAttachments != ""){
$attachmentBoundary = $this->getRandomBoundary()
$mailHeader .= "콘텐츠 유형: multipart/mixed;n";
$mailHeader .= 'boundary="'.$attachmentBoundary.'"'. "nn";
$mailHeader .= "이것은 MIME 형식의 다중 부분 메시지입니다."
$ mailHeader .= "--".$attachmentBoundary.
$bodyBoundary = $this->getRandomBoundary(1)
$textHeader = $this->formatTextHeader(); htmlHeader = $this->formatHTMLHeader();
$mailHeader .= "MIME 버전: 1.0n";
$mailHeader .= "콘텐츠 유형: multipart/alternative;n"; mailHeader .= 'boundary="'.$bodyBoundary.'"';
$mailHeader .= "nnn"; mailHeader .= $textHeader
$mailHeader .= "--".$bodyBoundary. ";
$mailHeader .= $htmlHeader; . "--";
//--첨부파일 값 가져오기
$attachmentArray =explore( ",",$this->mailAttachments);
//--첨부 파일 수를 기준으로 반복
for($i=0;$i//--Split $mailHeader .= "n --".$attachmentBoundary."n";
//--첨부파일 정보
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$ mailHeader .= "--".$attachmentBoundary. "- -";
return mail($this->mailTo,$this->mailSubject, "",$mailHeader); false 반환
}
}
?>

위에서는 내 어깨에 머리를 대고 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


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