mime
我们将考查的下一个方法是,build_message(),它占据了整个工作的大部分,但它是通过一个
gen_email()的方法来调用的。请注意build_message()是一个私有方法。
function build_message() {
$msg = "";
$boundary = 'PM'.chr(rand(65, 91)).'------'.md5(uniqid(rand())); # 边界标识
$nparts = sizeof($this->mimeparts);
//情况1:存在附件列表,所以MIME信息头必须是multipart/mixed
if (is_array($this->mimeparts) && ($nparts > 1)) {
$c_ver = "MIME-Version: 1.0".CRLF;
$c_type = 'Content-Type:
multipart/mixed;'.CRLF." boundary="$boundary"".CRLF;
$c_enc = "Content-Transfer-Encoding: ".BIT7.CRLF;
$c_desc = $c_desc?"Content-Description: $c_desc".CRLF:"";
$warning = CRLF.WARNING.CRLF.CRLF ;
// 如果存在MIMIE段,则邮件体也要变成附件
if (!empty($this->body)) {
$this->attach($this->body, BODY, TEXT, BIT7);
}
// 现在创建邮件的各个MIME段
for ($i=0 ; $i if (!empty($this->mimeparts[$i]))
$msg .= CRLF.'--'.$boundary.CRLF.$this->mimeparts[$i].CRLF;
}
$msg .= '--'.$boundary.'--'.CRLF;
$msg = $c_ver.$c_type.$c_enc.$c_desc.$warning.$msg;
} else {
if (!empty($this->body)) $msg .= $this->body.CRLF.CRLF;
}
return $msg;
}
?>
这个方法有点自相予盾,简单而又复杂。要看你自已怎么看了。
我们在前面读到(在MIME基础中),每一个MIME段都有一个边界标记,这个标记有一个唯一的id。边
界标记被用在:
MIME信息头中,用来指示附件必须从哪进行划分
MIME段中;实际用在每一段的前面和后面来划分附件的边界。(回想一下Alexander的有着图片
和图谱的邮件!)
(记住:最后一个边界标记要以两个连接符(--)结束,用于指示范围结束)。
$boundary包含了边界标记,并且它是通过一个随机数进行了唯一化再做MD5哈希生成的。另外,我们
给$boundary冠以一个"PM?"的前缀,这里"?"是一个随机字母。举一个$boundary的例子就是
"PMK------2345ee5de0052eba4daf47287953d37e"(PM表示PHP MIME,所以你可以将其改为你的可能的
初始值!)
在生成MIME头的处理中我们必须考虑两种情况。这些情况影响了邮件的原始邮件体($body在构造函数
中)以哪种方式被看待和MIME信息头的特别表示。情况1就是写这篇文章的原因,并且你会看到:可以
有许多的附件被包含!在这种情况下,请注意作为信息的部分被放上了警告字符串"This
is a MIME
encoding message"。因此,真正的消息体本身也必须以附件形式加到信息中!邮件的文本通常是附件
列表中的第一个附件,在我们的例子中就是$mimeparts。这个正好就是为什么我们要占用一个
$mimeparts索引的原因,以便让第一个索引(是0)可以用于邮件文本部分。邮件体必须以7bit编码进
行附加。
if (!empty($this->body)) {
$this->attach($this->body, BODY, TEXT, BIT7);
}
?>
上面的一小段代码完成附加邮件文本部分作为一个MIME附件的工作。注意,我们使用了'BODY'常量来
指示attach()要将附件加到何处。
第二种情况就是当不存在附件时,在这种情况下,如果提供了邮件文本,它将是包含在局部变量$msg
中的唯一信息;在这种情况下不需要MIME头。(然而,在这种情况下我们还应该只把MIME-Version头
指定出来----回过头到再看一下前面的演示的最简单的MIME信息。)
MIME信息头(MIME-Version,Content-Type,
等等。)在有附件的时候被创建。为了用MIME消息头来
创建消息体,首先MIME信息头要被创建。然后各个有效的MIME段通过$mimeheaders数组被反复处理。
这就是边界标识被实际使用的地点。根据规则的一致性,对一个MIME段被前缀上两个连接符('--
'.$BOUNDARY.crlf)并且在最后一个MIME段的后面,在边界标识后追加两个连接符表示邮件范围结束。
在变量$msg中的完整的信息作为这个方法的值被返回。
下一个方法,get_email()通过build_message()方法完成MIME消息的生成。因为build_message()是一
个内部方法,get_email()在调用完build_message()之后,创建RFC 822的信息头并且追加上MIME信息。
function gen_email($force=false) {
if (!empty($this->email) && !$force) return $this->email ; //
saves processing
$email = "";
if (empty($this->subject)) $this->subject = NOSUBJECT;
if (!empty($this->from)) $email .= 'From: '.$this->from.CRLF;
if (!empty($this->headers)) $email .= $this->headers.CRLF;
$email .= $this->build_message();
$this->email = $email;
return $this->email;
}
?>
对于我们的类的一个实例来说,类的成员$email拥有生成的整个邮件信息。为了避免信息被无必要的重
新生成,这个方法继续创建邮件头,并且只有当$mail为空时才调用build_message()。然而,你可以通过调
用gen_email()来强制重新处理。(如果"To"信息被改变或加入了一个新的附件,调用者显示想这么做)。
gen_email()创建了更熟悉的From头。另外,如果没有指定主题,它将主题设为缺省值(No
Subject)。
我们直到后面才将To和Subject
的内含保存起来。这个方法返回完整的邮件信息,这样就结束了创建MIME信
息的任务。

一封电子邮件的旅程是:MUA:MailUserAgent——邮件用户代理。(即类似Outlook的电子邮件软件)MTA:MailTransferAgent——邮件传输代理,就是那些Email服务提供商,比如网易、新浪等等。MDA:MailDeliveryAgent——邮件投递代理。Email服务提供商的某个服务器发件人->MUA->MTA->MTA->若

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

一、this关键字1.this的类型:哪个对象调用就是哪个对象的引用类型二、用法总结1.this.data;//访问属性2.this.func();//访问方法3.this();//调用本类中其他构造方法三、解释用法1.this.data这种是在成员方法中使用让我们来看看不加this会出现什么样的状况classMyDate{publicintyear;publicintmonth;publicintday;publicvoidsetDate(intyear,intmonth,intday){ye

同事因为this指向的问题卡住的bug,vue2的this指向问题,使用了箭头函数,导致拿不到对应的props。当我给他介绍的时候他竟然不知道,随后也刻意的看了一下前端交流群,至今最起码还有70%以上的前端程序员搞不明白,今天给大家分享一下this指向,如果啥都没学会,请给我一个大嘴巴子。

很多用户在日常生活中都需要发送邮件来进行工作,有些更是需要附加各种插件资料进行交流,那么该怎么插入附件呢?下面就一起来看看详细的教程吧。win10邮箱如何插入附件:1、打开邮箱2、点击左上角的“新邮件”图标3、点击右上角“插入”4、点击右上角“附件”5、选择需要的“附件”6、完成即可

jQuery是一种流行的JavaScript库,广泛用于网页开发中的DOM操作和事件处理。其中一个重要的概念就是this关键字的使用。在jQuery中,this代表当前操作的DOM元素,但在不同的上下文中,this的指向可能会有所不同。本文将通过具体的代码示例来解析jQuery中this的使用技巧。首先,让我们来看一个简单的示例:

JavaScript中箭头函数是一种比较新的语法,没有自己的this关键字,相反箭头函数的this指向包含它的作用域对象,影响方面有:1、箭头函数中的this是静态的;2、箭头函数不能作为构造函数使用;3、箭头函数不能用作方法。

什么是this?下面本篇文章给大家介绍一下JavaScript中的this,并聊聊this在函数不同调用方式下的区别,希望对大家有所帮助!


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
