设为首页 收藏本站
查看: 1099|回复: 0

[经验分享] PHP发送邮件源码 可发html格式邮件 附件

[复制链接]

尚未签到

发表于 2017-4-11 07:26:27 | 显示全部楼层 |阅读模式
<?php
classEmail{
//---设置全局变量
var$mailTo="";//收件人
var$mailCC="";//抄送
var$mailBCC="";//秘密抄送
var$mailFrom="";//发件人
var$mailSubject="";//主题
var$mailText="";//文本格式的信件主体
var$mailHTML="";//html格式的信件主体
var$mailAttachments="";//附件
/*
函数setTo($inAddress):用于处理邮件的地址参数$inAddress
为包涵一个或多个字串,email地址变量,使用逗号来分割多个邮件地址
默认返回值为true
*********************************************************
*/
functionsetTo($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray=explode(",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$i<count($addressArray);$i++){if($this->checkEmail($addressArray[$i])==false)returnfalse;}
//--所有合法的email地址存入数组中
$this->mailTo=implode($addressArray,",");
returntrue;}
/**************************************************
函数setCC($inAddress)设置抄送人邮件地址
参数$inAddress为包涵一个或多个邮件地址的字串,email地址变量,
使用逗号来分割多个邮件地址默认返回值为true
*************************************************************
*/
functionsetCC($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray=explode(",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$i<count($addressArray);$i++){if($this->checkEmail($addressArray[$i])==false)returnfalse;}
//--所有合法的email地址存入数组中
$this->mailCC=implode($addressArray,",");
returntrue;}
/***************************************************
函数setBCC($inAddress)设置秘密抄送地址参数$inAddress为包涵一个或多
个邮件地址的字串,email地址变量,使用逗号来分割多个邮件地址默认返回值为
true
*****************************************
*/
functionsetBCC($inAddress){
//--用explode()函数根据”,”对邮件地址进行分割
$addressArray=explode(",",$inAddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$i<count($addressArray);$i++)
{
if($this->checkEmail($addressArray[$i])==false)
returnfalse;
}
//--所有合法的email地址存入数组中
$this->mailBCC=implode($addressArray,",");
returntrue;
}
/*****************************************************************
函数setFrom($inAddress):设置发件人地址参数$inAddress为包涵邮件
地址的字串默认返回值为true
**************************************
*/
functionsetFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom=$inAddress;
returntrue;
}
returnfalse;}
/**********************
函数setSubject($inSubject)用于设置邮件主题参数$inSubject为字串,
默认返回的是true
******************************************
*/
functionsetSubject($inSubject){
if(strlen(trim($inSubject))>0){
$this->mailSubject=ereg_replace("n","",$inSubject);
returntrue;}
returnfalse;}
/****************************************************
函数setText($inText)设置文本格式的邮件主体参数$inText为文本内容默
认返回值为true
***************************************
*/
functionsetText($inText){
if(strlen(trim($inText))>0){
$this->mailText=$inText;
returntrue;}
returnfalse;
}
/**********************************
函数setHTML($inHTML)设置html格式的邮件主体参数$inHTML为html格式,
默认返回值为true
***********************************
*/
functionsetHTML($inHTML){
if(strlen(trim($inHTML))>0){
$this->mailHTML=$inHTML;
returntrue;}
returnfalse;}
/**********************
函数setAttachments($inAttachments)设置邮件的附件参数$inAttachments
为一个包涵目录的字串,也可以包涵多个文件用逗号进行分割默认返回值为true
******************************************
*/
functionsetAttachments($inAttachments){
if(strlen(trim($inAttachments))>0){
$this->mailAttachments=$inAttachments;
returntrue;}
returnfalse;}
/*********************************
函数checkEmail($inAddress):这个函数我们前面已经调用过了,主要就是
用于检查email地址的合法性
****************************************
*/
functioncheckEmail($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由于放置邮件主体
**********************************************************
*/
functionloadTemplate($inFileLocation,$inHash,$inFormat){
/*比如邮件内有如下内容:Dear~!UserName~,
Youraddressis~!UserAddress~
*/
//--其中”~!”为起始标志”~”为结束标志
$templateDelim="~";
$templateNameStart="!";
//--找出这些地方并把他们替换掉
$templateLineOut="";//--打开临时文件
if($templateFile=fopen($inFileLocation,"r")){
while(!feof($templateFile)){
$templateLine=fgets($templateFile,1000);
$templateLineArray=explode($templateDelim,$templateLine);
for($i=0;$i<count($templateLineArray);$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));
elseif(strtoupper($inFormat)=="HTML")
return($this->setHTML($templateLineOut));
}
returnfalse;
}
/*****************************************
函数getRandomBoundary($offset)返回一个随机的边界值
参数$offset为整数–用于多管道的调用返回一个md5()编码的字串
***************************************
*/
functiongetRandomBoundary($offset=0){
//--随机数生成
srand(time()+$offset);
//--返回md5编码的32位字符长度的字串
return("----".(md5(rand())));}
/********************************************
函数:getContentType($inFileName)用于判断附件的类型
*********************************************
*/
functiongetContentType($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的文件头
****************************************************
*/
functionformatTextHeader(){$outTextHeader="";
$outTextHeader.="Content-Type:text/plain;
charset=us-asciin
";
$outTextHeader.="Content-Transfer-Encoding:7bitnn";
$outTextHeader.=$this->mailText."n";
return$outTextHeader;
}
/************************************************
函数formatHTMLHeader()把邮件主体内容加上html的文件头
*****************************************
*/
functionformatHTMLHeader(){
$outHTMLHeader="";
$outHTMLHeader.="Content-Type:text/html;
charset=us-asciin
";
$outHTMLHeader.="Content-Transfer-Encoding:7bitnn";
$outHTMLHeader.=$this->mailHTML."n";
return$outHTMLHeader;
}
/**********************************
函数formatAttachmentHeader($inFileLocation)把邮件中的附件标识出来
*******************************
*/
functionformatAttachmentHeader($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$inFileLocationnothing_out",$returnArray);
for($i=1;$i<(count($returnArray));$i++){
$outAttachmentHeader.=$returnArray[$i]."n";
}
}
return$outAttachmentHeader;
}
/******************************
函数send()用于发送邮件,发送成功返回值为true
***********************************
*/
functionsend(){
//--设置邮件头为空
$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==""){
returnmail($this->ma

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-363094-1-1.html 上篇帖子: PHP招聘:如何面试应届生求职者 下篇帖子: PHP扩展pcntl(进程控制以及信号处理)中文文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表