首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> PHP教程
用PHP发送MIME邮件(四)-PHP教程,PHP技巧
作者:网友供稿 点击:32
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
核心:方法
  我们将mime信息头的生成,mime段头的生成和最终的邮件消息的生成分成几个模块。方法的实现是直接从我们前面遇到的mime基础而来的。

<?php

function attach($data, $description = "", $contenttype = octet,
$encoding = base64, $disp = ) {
if (empty($data))
return 0;
if (trim($contenttype) == )
$contenttype = octet ;
if (trim($encoding) == )
$encoding = base64;
if ($encoding == bit7)
$emsg = $data;
elseif ($encoding == qp)
$emsg = $$this->qp_func($data);
elseif ($encoding == base64) {
if (!$this->base64_func) # 检查是否有用户自动定函数
$emsg = base64_encode($data);
else
$emsg = $$this->base64_func($data);
}
$emsg = chunk_split($emsg);
//检查是否content-type是text/plain并且如果没有指定charset,追加缺省的charset
if (preg_match("!^".text."!i", $contenttype) &&
!preg_match("!;charset=!i", $contenttype))
$contenttype .= ";
charset=".charset ;
$msg = sprintf("content-type: %scontent-transfer-encoding: %s%s%s%s",
$contenttype.crlf,
$encoding.crlf,
((($description) && (body != $description))?"content-description:
$description".crlf:""),
($disp?"content-disposition: $disp".crlf:""),
crlf.$emsg.crlf);
body==$description? $this->mimeparts[0] = $msg: $this->mimeparts[] = $msg
;
return sizeof($this->mimeparts);
}

?>

  让我们仔细地看一下这个方法(对于其它的大部分方法也将如此):

这个方法使用的参数有:
所附的实际数据($data)
与content-description头相应的数据描述($description)
将用在content-type头中的数据content-type值($contentype)
用在content-transfer-encoding中的编码值($encoding)
用在content-disposition头$disp中的布局值,可以是inline或attach,两个都是常量
如base64,text这样的值等等,作为常量被定义在附加的.def文件中。
使用$encoding值来决定需要用哪种编码方式对数据进行编码。有效的值是bit7(或7bit),qp或base64。
这个函数同时也检查了是否用户要使用他/她自已的base64或qp函数。在写这篇文章时,在我们的类中
只有bit7和base64被实现了,然而,你可以传递你自已的quoted-printable
函数来使用,通过在前面
讨论的$qp_func类变量。
在编码处理之后,你会注意到对编码的信息使用了chunk_split()。这个函数根据可选长度将字符串分
割成小段。因为我们没有指出长度,缺省长度使用76。这个非常附合邮件处理的习惯。
接着,如果$contenttype参数包含text/plain,则必须给出"charset="
参数的值。它的缺省值被定义
在常量charset中,值为us-ascii。注意当头使用参数值传递时,在头与参数之间必须有一个分号(;)。
例如,content-type: text/plain; charset=us-ascii
如果其它mime段头各自的值被传递给这个方法,这些段头被创建。毕竟我们不想拥有一个没有描述的
content-description头。在创建这些头之后,我们追加上经过编码的数据部分信息。(检查一下方法
中的sprintf()语句)。
同样,注意我们使用了一个叫body(又是一个常量)的特别描述字段。这就是我们用在类实现中的东西。
如果描述字段与body一样,我们将其赋给$mimeheaders数组中的第一个元素。对于这个请多读几遍。

attach() 返回$mimeparts数组的当前大小,用在调用脚本的引用中。通过这种方法就可以知道一个附
件"x"存在哪一个索引中(实际返回的值要比在数组中的索引小1)
注意所有的头必须用一个crlf(
)序列结束。
  接着,我们看一下fattach()方法,fattach()与attach()相似,但是它使用一个文件名作为它的第一个
参数(作为attach()中$data的替换)。这个方法只是一个封装,以便调用者可以用一个文件来调用fattach。
fattach()然后将文件读出,接着调用attach()来追加数据。这个方法在失败时返回0,可以在$errstr
变量
中找到解释或者当成功时,返回文件附件在$mimeparts数组中的索引号。

  我们现在已经开发了附加数据的功能,对它们进行编码并且将单独的mime段放在私有数组中。还需要完
成的工作是:

完成mime的各个段
创建包含mime信息头的邮件信息头,邮件原始的信息头(如to:,from:等等)并且包括任何用户定义
的头。
在头后面追加完整的mime段,这样一个完整的邮件包就生成了。



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·php聊天室技术
·Java面试中的陷阱-JSP教程,Java技巧及代码
·如何找出在线电影的真实下载地址
·用Visual C#实现局域网点对点通讯-.NET教程,C#语言
·不使用installutil.exe安装WINDOWS服务-.NET教程,Windows开发
·域名查询代码公布
·J2EE项目10大风险-JSP教程,J2EE/EJB/服务器
·“IIS配置401错误”完美解决方案-.NET教程,评论及其它
·如何使用ASP实现网站的“目录树”管理-ASP教程,数据库相关
·Java 面试中的陷阱-JSP教程,Java技巧及代码
最新文章
·windows powershell的12项酷功能_windows vista
·google adwords投放报告(一)_网赚技巧
·互联网赚钱三种最基本的模式_网赚技巧
·百度联盟:何种做法会被认为是网站作弊_网赚技巧
·google adsense电话验证的注意事项_网赚技巧
·王峰:没什么可以改变我与雷军的十年友情_站长访谈
·胡安军:创业需要一种信仰_站长访谈
·金融界ceo赵志伟:行业整合才刚刚开始_站长访谈
·李军 bios之家的荣耀与梦想_站长访谈
·酷溜网李善友:创业不赚钱 毋宁死_站长访谈
相关主题
  • 用php发送有附件的电子邮件_邮件服务器
  • 用php发送带附件的Email-PHP教程,邮件处理
  • 用PHP发送MIME邮件(六)-PHP教程,PHP技巧
  • 用PHP发送MIME邮件(五)-PHP教程,PHP技巧
  • 用PHP发送MIME邮件(三)-PHP教程,PHP技巧
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭