您的位置:首页网页设计PHP实例 → 用PHP发送MIME邮件(三)

用PHP发送MIME邮件(三)

时间:2004/11/7 3:21:00来源:本站整理作者:蓝点我要评论(0)

作者:Kartic Krishnamurthy 译者:limodou



MIME 类

  在有了这些基础之后,让我们用PHP创建和实现一个MIME邮件类。在我们的PHP库函数中,已经有了编码 所必须的工具。



  MIME类必须能够:



增加附件

对每一个独立的请求,对所附的数据进行编码创建MIME段/头 生成一个包含MIME段/头的完整的邮件将整个邮件作为字符串返回用本地的邮件处理程序进行发送(或选择调用一个SMTP邮件处理程序)

  这个类叫做MIME_mail。我们将讨论类的方法,在理论与实际的差距中建立起桥梁。(阅读建议:Luis Argerich的PHP的面向对象编程:开发大型PHP项目的方法)。为了便于阅读大部分的注释已经被去掉了。一些方法与类的成员变量只是用于内部处理,并且已经在下面的注释中被指出来了(同时在初始的类文件中也指出了)。






class MIME_mail {

//公有:

var $to;

var $from;

var $subject;

var $body;

var $headers = "";

var $errstr="";



var $base64_func= ''; // 如果未指定使用PHP的base64函数

var $qp_func = ''; // 此时为空



var $mailer = ""; // 将其设为有效的邮件对象的名字



?>



  这里有一些公共处理的变量(也就是,可以在脚本中直接操纵的变量)。这些变量中的大部分都是自说明的。$headers包含了可选的想要发送给邮件处理程序的头信息。$errstr 是一个包含可读错误字符串的变量,它可以用在调用脚本中。



  $base64_func和$qp_func是"函数处理器",用户可以进行定制。缺省地,它们被设为空串。对于$base64_func,一个空串意味着我们将使用PHP内置的base64_encode()函数...(是的!优美,不是吗!)。

Quoted Printable可以通过$qp_func被处理。在PHP中没有内置的quoted-printable 编码函数(然而,安装

了imap则可以使用imap_qprint())。在这篇文章中我们将不再讨论quoted_printable方法。






//私有:

var $mimeparts = array();



?>



  $mimeparts是一个内部数组,包含了邮件信息中各自独立的符合MIME段。请不要在这个类(或派生类)之外操纵它和其它的私有方法/变量。






// 构造函数

function MIME_mail($from="", $to="", $subject="", $body="", $headers = "") {

$this->to = $to;

$this->from = $from;

$this->subject = $subject;

$this->body = $body;

if (is_array($headers)) {

if (sizeof($headers)>1)

$headers=join(CRLF, $headers);

else

$headers=$headers[0];

}

if ($from) {

$headers = preg_replace("!(from:\ ?.+?[\r\n]?\b)!i", '', $headers);

}

$this->headers = chop($headers);

$this->mimeparts[] = "" ; //增加位置0

return;

}



?>



  我们拥有对象的构造函数,它使用"from"和"to"邮件地址,主题和邮件体和头作为参数。对于邮件体部分,可以给出你将可能输入的正常邮件。最后一个参数是可选的(用户自定义)头。例如,X-Mailer:

MyMailer_1.0。请注意$headers可以是一个数组,包含了将要发给邮件发送程序的不同的头,或者只是某个特别头的容器。你不能在$headers参数中发送From: 头,如果它被找到,这部分将自动被去掉。你可以象下 面使用多个头:array("X-Mailer: MYMailer_1.0", "X-Organization: PHPBuilder.com")。



  $mimeparts用一个空项(索引0)创建,在后面我们将看到这样用的道理。  




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图