찾다
  • 로그인
  • 가입
비밀번호 재설정 성공

당신이 관심을 갖고 있는 프로젝트를 팔로우하고 그들에 관한 최신 뉴스를 맛보세요

php教程 php手册 PHP的类 功能齐全的发送邮件类

PHP的类 功能齐全的发送邮件类

Jun 13, 2016 pm 12:41 PM
class email php 암호 전반적인 상황 보내다 변하기 쉬운 복사 ~의 친절한 설정 우편

复制代码 代码如下:


class Email {
//---设置全局变量
var $mailTo = ""; // 收件人
var $mailCC = ""; // 抄送
var $mailBCC = ""; // 秘密抄送
var $mailFrom = ""; // 发件人
var $mailSubject = ""; // 主题
var $mailText = ""; // 文本格式的信件主体
var $mailHTML = ""; // html格式的信件主体
var $mailAttachments = ""; // 附件
/* 函数setTo($inAddress) :用于处理邮件的地址 参数 $inAddress
为包涵一个或多个字串,email地址变量,使用逗号来分割多个邮件地址
默认返回值为true
**********************************************************/
function setTo($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray = explode( ",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//--所有合法的email地址存入数组中
$this->mailTo = implode($addressArray, ",");
return true; }
/**************************************************
函数 setCC($inAddress) 设置抄送人邮件地址
参数 $inAddress 为包涵一个或多个邮件地址的字串,email地址变量,
使用逗号来分割多个邮件地址 默认返回值为true
**************************************************************/
function setCC($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray = explode( ",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//--所有合法的email地址存入数组中
$this->mailCC = implode($addressArray, ",");
return true; }
/***************************************************
函数setBCC($inAddress) 设置秘密抄送地址 参数 $inAddress 为包涵一个或多
个邮件地址的字串,email地址变量,使用逗号来分割多个邮件地址 默认返回值为
true
******************************************/
function setBCC($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray = explode( ",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$i{ if($this->checkEmail($addressArray[$i])==false)
return false;
}
//--所有合法的email地址存入数组中
$this->mailBCC = implode($addressArray, ",");
return true;
}
/*****************************************************************
函数setFrom($inAddress):设置发件人地址 参数 $inAddress 为包涵邮件
地址的字串默认返回值为true
***************************************/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress;
return true;
} return false; }
/**********************
函数 setSubject($inSubject) 用于设置邮件主题参数$inSubject为字串,
默认返回的是true
*******************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this->mailSubject = ereg_replace( "n", "",$inSubject);
return true; }
return false; }
/****************************************************
函数setText($inText) 设置文本格式的邮件主体参数 $inText 为文本内容默
认返回值为true
****************************************/
function setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
return true; }
return false;
}
/**********************************
函数setHTML($inHTML) 设置html格式的邮件主体参数$inHTML为html格式,
默认返回值为true
************************************/
function setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $inHTML;
return true; }
return false; }
/**********************
函数 setAttachments($inAttachments) 设置邮件的附件 参数$inAttachments
为一个包涵目录的字串,也可以包涵多个文件用逗号进行分割 默认返回值为true
*******************************************/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return true; }
return false; }
/*********************************
函数 checkEmail($inAddress) :这个函数我们前面已经调用过了,主要就是
用于检查email地址的合法性
*****************************************/
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 由于放置邮件主体
***********************************************************/
function loadTemplate($inFileLocation,$inHash,$inFormat){
/* 比如邮件内有如下内容: Dear ~!UserName~,
Your address is ~!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, "");
} //--关闭文件fclose($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位 字符长度的字串
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": return "image/gif";
case ".gz": return "application/x-gzip";
case ".htm": return "text/html";
case ".html": return "text/html";
case ".jpg": return "image/jpeg";
case ".tar": return "application/x-tar";
case ".txt": return "text/plain";
case ".zip": return "application/zip";
default: return "application/octet-stream";
}
return "application/octet-stream";
}
/**********************************************
函数formatTextHeader把文本内容加上text的文件头
*****************************************************/
function formatTextHeader(){ $outTextHeader = "";
$outTextHeader .= "Content-Type: text/plain;
charset=us-asciin";
$outTextHeader .= "Content-Transfer-Encoding: 7bitnn";
$outTextHeader .= $this->mailText. "n";
return $outTextHeader;
} /************************************************
函数formatHTMLHeader()把邮件主体内容加上html的文件头
******************************************/
function formatHTMLHeader(){
$outHTMLHeader = "";
$outHTMLHeader .= "Content-Type: text/html;
charset=us-asciin";
$outHTMLHeader .= "Content-Transfer-Encoding: 7bitnn";
$outHTMLHeader .= $this->mailHTML. "n";
return $outHTMLHeader;
}
/**********************************
函数 formatAttachmentHeader($inFileLocation) 把邮件中的附件标识出来
********************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader = "";
//--用上面的函数getContentType($inFileLocation)得出附件类型
$contentType = $this->getContentType($inFileLocation);
//--如果附件是文本型则用标准的7位编码
if(ereg( "text",$contentType)){
$outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n";
$outAttachmentHeader .= "Content-Transfer-Encoding: 7bitn";
$outAttachmentHeader .= "Content-Disposition: attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn";
$textFile = fopen($inFileLocation, "r");
while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000);
}
//--关闭文件 fclose($textFile);
$outAttachmentHeader .= "n";
}
//--非文本格式则用64位进行编码
else{ $outAttachmentHeader .= "Content-Type: ".$contentType. ";n";
$outAttachmentHeader .= ' name="'.basename($inFileLocation). '"'. "n";
$outAttachmentHeader .= "Content-Transfer-Encoding: base64n";
$outAttachmentHeader .= "Content-Disposition: attachment;n";
$outAttachmentHeader .= ' filename="'.basename($inFileLocation). '"'. "nn";
//--调用外部命令uuencode进行编码
exec( "uuencode -m $inFileLocation nothing_out",$returnArray);
for ($i = 1; $i$outAttachmentHeader .= $returnArray[$i]. "n";
}
} return $outAttachmentHeader;
}
/******************************
函数 send()用于发送邮件,发送成功返回值为true
************************************/
function send(){
//--设置邮件头为空
$mailHeader = "";
//--添加抄送人
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或text格式
else if($this->mailText != "" && $this->mailHTML != "" && $this->mailAttachments == ""){
$bodyBoundary = $this->getRandomBoundary();
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
//--设置 MIME-版本
$mailHeader .= "MIME-Version: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n";
$mailHeader .= ' boundary="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
//--添加邮件主体和边界
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary. "n";
//--添加html标签
$mailHeader .= $htmlHeader;
$mailHeader .= "n--".$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 .= "This is a multi-part message in MIME format.n";
$mailHeader .= "--".$attachmentBoundary. "n";
$bodyBoundary = $this->getRandomBoundary(1);
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
$mailHeader .= "MIME-Version: 1.0n";
$mailHeader .= "Content-Type: multipart/alternative;n";
$mailHeader .= ' boundary="'.$bodyBoundary. '"';
$mailHeader .= "nnn";
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $textHeader;
$mailHeader .= "--".$bodyBoundary. "n";
$mailHeader .= $htmlHeader;
$mailHeader .= "n--".$bodyBoundary. "--";
//--获取附件值
$attachmentArray = explode( ",",$this->mailAttachments);
//--根据附件的个数进行循环
for($i=0;$i//--分割 $mailHeader .= "n--".$attachmentBoundary. "n";
//--附件信息
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .= "--".$attachmentBoundary. "--";
return mail($this->mailTo,$this->mailSubject, "",$mailHeader);
}
return false;
}
}
?>

  

使用方法:

复制代码 代码如下:



Include “email.class”

$mail->setTo("a@a.com"); //收件人
$mail-> setCC("b@b.com,c@c.com"); //抄送
$mail-> setCC("d@b.com,e@c.com"); //秘密抄送
$mail->setFrom(“f@f.com”);//发件人
$mail->setSubject(“主题”) ; //主题
$mail->setText(“文本格式”) ;//发送文本格式也可以是变量
$mail->setHTML(“html格式”) ;//发送html格式也可以是变量
$mail->setAttachments(“c:a.jpg”) ;//添加附件,需表明路径
$mail->send(); //发送邮件
?>

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

AI Clothes Remover

AI Clothes Remover

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

Undresser.AI Undress

Undresser.AI Undress

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

Stock Market GPT

Stock Market GPT

더 현명한 결정을 위한 AI 기반 투자 연구

인기 있는 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

PHP 피라미드 루프의 숫자 통계: 총계, 홀수 및 짝수의 올바른 계산 방법 PHP 피라미드 루프의 숫자 통계: 총계, 홀수 및 짝수의 올바른 계산 방법 Mar 04, 2026 pm 01:30 PM

이 문서에서는 PHP 피라미드 인쇄 루프에서 생성된 모든 숫자의 총 수, 홀수 및 짝수를 정확하게 계산하는 방법, 일반적인 논리 오류(예: 변수 오용, 개체 계산 혼동)를 수정하는 방법, 실행 가능한 예제 및 주요 예방 조치를 제공하는 방법을 자세히 설명합니다.

PHP 연산자 우선순위 table_php 공식 연산자 우선순위는 어디서 볼 수 있나요 [참고] PHP 연산자 우선순위 table_php 공식 연산자 우선순위는 어디서 볼 수 있나요 [참고] Mar 02, 2026 am 11:45 AM

PHP 연산자 우선 순위에 대한 공식적인 설명은 https://www.php.net/manual/en/langage.operators.precedence.php에 있습니다. 액세스하려면 "operatorprecedence"를 직접 검색하거나 수동으로 URL을 입력해야 합니다. == 및 ===는 동일한 우선순위를 갖고 동일한 레벨에 속합니다. 오류가 발생하기 쉬운 조합에는 &&/|| 및/또는 ?: 및 ??, new 및 []; 복잡한 표현식은 대괄호로 묶어야 합니다.

PHP에서 중첩 배열의 임의 깊이 값을 동적으로 설정하는 방법 PHP에서 중첩 배열의 임의 깊이 값을 동적으로 설정하는 방법 Mar 04, 2026 am 11:15 AM

이 글에서는 키 경로 배열(예: ['key1', 'key2', 'key3'])을 사용하여 다차원 연관 배열의 마지막 노드에 값을 할당하고, 값 전송으로 인한 참조 실패 문제를 해결하고, 키 존재 확인을 고려하는 안전하고 효율적인 방법을 소개합니다.

PHP 로직에 PayPal JavaScript SDK를 포함하는 올바른 방법 PHP 로직에 PayPal JavaScript SDK를 포함하는 올바른 방법 Mar 04, 2026 pm 01:12 PM

이 문서에서는 에코 혼란스러운 출력, 코딩 충돌 및 HTML 구조 손상을 방지하고 버튼이 정상적으로 렌더링되고 주문 프로세스가 완료되도록 보장하기 위해 PHP 조건부 분기(예: 결제 방법 판단)에 PayPalJSSDK 프런트 엔드 코드를 안전하고 표준적으로 삽입하는 방법을 자세히 설명합니다.

PHP_PHP 전체 인증 프로세스에서 OAuth2.0 인증 코드 모드를 구현하는 방법 [작업] PHP_PHP 전체 인증 프로세스에서 OAuth2.0 인증 코드 모드를 구현하는 방법 [작업] Apr 13, 2026 pm 11:42 PM

PHP에서 생성된 인증 URL에는 response_type=code, client_id, 리디렉션_uri 및 상태가 포함되어야 합니다. Redirect_uri는 등록과 정확히 동일해야 하며(후행 슬래시 포함), CSRF를 방지하기 위해 비교를 위해 상태를 $_SESSION에 저장해야 합니다.

PHP 中如何安全输出字符串 "null" 而非空值 PHP 中如何安全输出字符串 "null" 而非空值 Mar 04, 2026 pm 12:03 PM

PHP8에서 변수 값이 null이면 direct echo는 빈 내용을 출력합니다. 이 문서에서는 Null 값을 문자열 "null"로 명시적으로 표시하기 위한 안전하고 간결한 다양한 방법(예: Null 병합 연산자, 삼항 약어 등)을 소개합니다.

PHP 연산자에서 ===와 ==의 차이점_PHP에서 완전 동일과 동일의 차이점 [비교] PHP 연산자에서 ===와 ==의 차이점_PHP에서 완전 동일과 동일의 차이점 [비교] Mar 04, 2026 pm 12:18 PM

PHP에서 ===와 ==의 차이점은 무엇입니까? 차이점은 "엄격한지 여부"가 아니라 "유형 변환이 필요한지 여부"입니다. ==는 비교하기 전에 먼저 양쪽을 동일한 유형으로 변환하려고 시도합니다. === 이 단계를 건너뛰세요. 유형이 다르면 직접적으로 false가 됩니다. 예를 들어 0=="0"은 true이지만 0==="0"은 false입니다. 예를 들어, null==false는 true이고 null===false는 false입니다. 어떤 상황에서 놀라기 쉽나요? 사용자 입력, 데이터베이스 반환값, JSON 파싱 결과 등 '문자열형 숫자'나 '혼합형 데이터'를 판단하는 데 흔히 사용된다. "0"==파

PHP에서 현재 타임스탬프를 얻는 방법_PHP에서 현재 타임스탬프를 얻는 방법 [작업] PHP에서 현재 타임스탬프를 얻는 방법_PHP에서 현재 타임스탬프를 얻는 방법 [작업] Apr 13, 2026 pm 11:51 PM

가장 직접적이고 신뢰할 수 있는 방법은 time() 함수를 사용하는 것입니다. 이 함수는 Unix 시대 이후의 정수 초를 반환하며 구문 분석도 없고 종속성도 없으며 시간대에 영향을 주지 않습니다. strtotime('now') 및 date('U')를 사용하지 말고 밀리초 정밀도를 얻으려면 microtime(true)을 사용하는 것이 좋습니다.

관련 기사