`

PHP发送邮件源码 可发html格式邮件 附件

阅读更多
<?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
分享到:
评论

相关推荐

    phpmailer 发邮件类 v5.1

    PHPMailer是一个发送电子邮件的PHP函数包,它可以在发送邮时指定多个收件人,支持抄送地址,回复地址,支持8bit,base64,binary和quoted-printable等多种邮件编码,支持SMTP验证、冗余SMTP服务器、支持带附件的邮件...

    利用Java发送邮件(含附件)的例子

    } /** * 增加发送附件 * @param filename * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常 * @return */ public boolean addFileAffix(String filename) { try { BodyPart bp = new MimeBodyPart...

    PHPMailer源码包

    6.支持带附件的邮件,可以为邮件添加任意格式的附件—当然得你的服务器有足够大的带宽支撑;7.自定义邮件头信息,这跟php中通过header函数发送头信息类似;8.支持将邮件正文制作成HTMl内容,那么就可以在邮件正文中...

    phpmailer邮件类 v5.1.rar

    支持带附件的邮件和Html格式的邮件.自定义邮件头.支持在邮件中嵌入图片.调试灵活.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等.可运行在任何**台之上 php本身提供了一个邮件发送函数...

    PHPMailer_v5.1邮件类

    PHPMailer是一个用于发送电子邮件的...支持带附件的邮件和Html格式的邮件.自定义邮件头.支持在邮件中嵌入图片.调试灵活.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等.可运行在任何平台之上。

    phpmailer邮件类 v6.0.1.zip

    支持带附件的邮件和Html格式的邮件.自定义邮件头.支持在邮件中嵌入图片.调试灵活.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等.可运行在任何平台之上 php本身提供了一个邮件发送函数mail...

    Php邮件群发系统(支持 smtp和mail方式)

    使用开源的phpmailer和readeexcel(读excel的程序)写的一个将excel里的邮件列表群发邮件功能。 界面是ckeditor,支持附件和html。发送方式为mail和smtp。 测试正常使用。

    邮件(Email)发送类PHPMailer v2.2.1.rar

    但PHPMailer能够通过简单的操作,实现HTML格式邮件发送,附件发送。不仅如此,PHPMailer还能够通过你自己的SNTP服务器处理邮件,并能够避免在Unix平台上mail()方法产生的诸多问题。 目前测试已通过的国内邮箱:126...

    phpmailer(优秀的php邮件类) V5.1 开源版.rar

    支持带附件的邮件和Html格式的邮件.自定义邮件头.支持在邮件中嵌入图片.调试灵活.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等.可运行在任何平台之上 php本身提供了一个邮件发送函数mail...

    php OA 源码 办公自动化源码

    公告:有相关权限的用户可以选择对某个人、某些人、某个部门或全体人员发送各种通告、制度、会议等消息,并可以随时查看自己已发和已收的公告,可以在发送公告时设置自动回复以确认指定接收人员是否收到,即使一时没...

    phpmailer邮件类 v6.0.1

    支持带附件的邮件和Html格式的邮件.自定义邮件头.支持在邮件中嵌入图片.调试灵活.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等.可运行在任何平台之上 php本身提供了一个邮件发送函数mail...

    PHP和MySQL Web开发第4版pdf以及源码

    1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数 1.5 访问表单变量 1.5.1 简短、中等以及长风格的表单变量 1.5.2 ...

    免积分下载 PHPMailer-master.zip

    phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。 1、在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。2、支持的 SMTP 服务器包括 ...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    PHlyMail v4.4.70.zip

    收/发纯文件或HTML格式并且带附件的邮件;支持发送SMS到移动电话;更换界面主题。由于PHlyMail采用模块化设计,所以很方便添加各种新的功能(如RSS,个人文件存储,书签管理等)。 PHlyMail 截图     相关...

    SSL发信源码,可附件-易语言

    用这份发信源码写的软件成品大概像这样,开放一个HTTP接口,然后用酷Q插件传递数据,实现自动发邮件给Q群新成员。 当然,仅开源了发信主体部分,软件非开源。 顺便说一句,如果是HTML形式的邮件,可以使用CID的方式...

    phplist v3.0.8 多国语言版.zip

    PHPlist是一款国外的邮件列表,支持HTML邮件和附件,支持多国语言,包括简繁中文,功能非常完整的邮件列表系统,几乎与电子报有关系的各种功能都有纳入系统设计。   功能介绍: *以网页介面发布与订阅电子报 *...

    PHPMailer:PHP的经典电子邮件发送库

    可能是全球最受欢迎的用于从PHP发送电子邮件的代码! 由许多开源项目使用:WordPress,Drupal,1CRM,SugarCRM,Yii和Joomla! 还有很多 集成的SMTP支持–在没有本地邮件服务器的情况下发送 发送带有多个“收件人”...

Global site tag (gtag.js) - Google Analytics