用PHP发送MIME邮件(二)
mime
"好,如何创建符合MIME的信息呢?" 通过上面的一般性的描述,让我们现在看一下所谓的MIME信息到底是什么!
最简单的MIME信息
这个信息没有任何段,也就是,没有附件。然而,因为它是一个MIME消息,它必须有必要的头。
From: php@php.net
To: 'Alex (the Great)'
Subject: Bucephalus
MIME-Version: 1.0
Hello Alexander,
How's Bucephalus doing?
这里面没有什么,它只是一个简单的拥有MIME头的符合RFC-822
的信息(文本邮件)。注意,如果没有
指定Content-Type头,则假设为Content-Type: text/plain;charset='us-ascii'!当然,它有些简单,复杂
一些的如下:
From: 'Alex (the Great)'
To: php@php.net
Subject: re: Bucephalus
MIME-Version: 1.0
Content-Type: image/jpg;
name='buce.jpg'
Content-Transfer-Encoding: base64
Content-Description: Take a look at him yourself
<.....base64 encoded jpg image of bucephalus...>
"嗨,但是我想发送一个word文档和一张我的小狗的图片在同一封邮件中...
!"一个用户说!如果是真
的,上面的那个例子就太简单了,并且它没有足够的内容来支持爱好者和现代邮件处理方面的需要。实际上,
许多的邮件客户端软件甚至不能显示描述字段!
这就是我们所面临的"多部分信息"。
多部分信息(Multipart Messages)
这个概念允许在一封邮件中发送多条项目。例如,假设Alexander想要给php@php.net发送一封他的马的
照片的邮件,同时还附带有马的家族图谱及精彩的说明!这样一个简单的要求没有多部分消息的概念是无法
被满足的。在这种情况下,我们创建了一个使用Content-Type的信息头的封装来支持邮件的不同部分,以便
收信人得到图片,家族图谱和精彩的说明!
Content-Type 头现在拥有一个"multipart"的值,它表示这是一个完整的邮件信息并且这个头只封装了
信息。而且它还有一个"mixed"的子类型(毕竟图片,家族图谱和7bit文本信息是不同的类型,对吗?)。
让我们看一下整个图片看上去象:
From: 'Alex (the Great)'
To: php@php.net
Subject: re: Bucephalus
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="XX-1234DED00099A";
Content-Transfer-Encoding: 7bit
This is a MIME Encoded Message
--XX-1234DED00099A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi PHP,
Attached you will find my horse, Bucephalus', pedigree chart and photo.
Alex
--XX-1234DED00099A
Content-Type: image/jpg;
name="buce.jpg";
Content-Transfer-Encoding: base64
Content-Description: "A photo of Bucephalus"
<.....base64 encoded jpg image of bucephalus...>
--XX-1234DED00099A
Content-Type: application/octet-stream;
name="pedigree.doc"
Content-Transfer-Encoding: base64
Content-Description: "Pedigree Chart of the great horse"
<.....base64 encoded doc of bucephalus...>
--XX-1234DED00099A--
哟,看上去很复杂,不是吗?不管怎样,让我们浏览一遍细节吧:
如果你注意到了在MIME信息头中的Content-Transfer-Encoding,为"7bit"。因为Content-Type为
multipart/mixed,编码应该是7bit,8bit或二进制中的一种,7bit是一种广泛使用的格式。
象这样一条信息包含了多种信息。客户程序是如何知道JPG图片,文档和普通文本之间的区别呢?你会
注意到在Content-Type后面有一个boundary="XX-1234DED00099A"参数。这个值用来分离邮件中的不同
部分。它叫做MIME边界标记。边界标记的值必须尽可能的唯一,以免在超出邮件范围时发生混乱。
"警告"信息(译者:指"This is a MIME Encoded
Message")在那里是为了让不符合MIME的客户程序
能够把它显示给用户,否则他们就不理解一个空白邮件是什么意思。
现在,回到边界标记。如果你观察这个简单的邮件,会发现边界标记(XX-1234DED00099A在每一个分
都出现了,也就是,在每部分之间都使用了一个边界标记,然而,每个边界标记都以两个连接符开始。
很重要的一点需要注意的就是在最后一个MIME段的后面,边界标记不仅仅以那两个边接符作为开始,
同时也以它俩作为结束。这一点一定不能忘记,因为它定义了邮件的范围。
让我们看一下前两个MIME段:
第一段是普通文本信息,因此Content-Type为text/plain,并且编码为7bit(我们也可以省略它,
因为如果不指明它也会默认为如此)。
第二个就是JPEG图片。相应的表示为Content-Type: image/jpg。name="buce.jpg"(出现在
Content-Type的后面,称之为参数),指出了文件的名字;它就是可以在客户程序中看到的附件
的名字。如果不给出name="buce.jpg"
,描述字段(如果给出)将作为附件的名字显示出来(然
而,在所有客户程序中它不是统一的做法)。
注意JPEG
图片可以在邮件件中被显示出来,如果客户程序可以显示行内附件。或者,你可以向客户程
指明你想如何显示附件。例如,如果存在
Content-Disposition: attachment 头,JPEG图片将被显示为一个附件图标。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제









Go에서 Type 키워드의 사용법에는 새로운 유형 별칭 정의 또는 새로운 구조 유형 생성이 포함됩니다. 자세한 소개: 1. 유형 별칭. 기존 유형에 대한 별칭을 생성하려면 "type" 키워드를 사용하십시오. 이 별칭은 새 유형을 생성하지 않고 기존 유형에 대한 새 이름만 제공하여 코드 가독성을 향상시킵니다. 2. 구조 유형을 사용하여 새 구조 유형을 생성합니다. 구조는 여러 필드 등을 포함하는 사용자 정의 유형을 정의하는 데 사용할 수 있습니다.

Ubuntu가 모바일 하드 디스크를 마운트할 때 오류가 발생합니다: mount:knownfilesystemtype'exfat' 처리 방법은 Ubuntu13.10 또는 install exfat-fuse: sudoapt-getinstallexfat-fuseUbuntu13.04 이하 sudoapt-add-repositoryppa:relan입니다. /exfatsudoapt-getupdatesudoapt-getinstallfuse- exfatCentOS CentOS에서 extfa를 로드하기 위한 Linux 마운트 exfat 형식 USB 디스크 오류 솔루션

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

이 가이드에서는 Linux의 "type" 명령에 대해 자세히 알아봅니다. 전제 조건: 이 가이드에 설명된 단계를 수행하려면 다음 구성 요소가 필요합니다. 올바르게 구성된 Linux 시스템. 테스트 및 학습 목적으로 LinuxVM을 생성하는 방법을 알아보세요. 명령줄 인터페이스에 대한 기본 이해 Linux의 Type 명령은 다른 Linux 관련 명령(예: ls, chmod, shutdown, vi, grep, pwd 등)과 다릅니다. "type" 명령은 내장되어 있습니다. 인수로 표시되는 Bash 함수입니다. 제공된 명령 유형에 대한 정보입니다. $type Bash 외에도 다른 쉘(Zsh, Ksh 등)도 함께 제공됩니다.

필수 정보 : 1. 이메일 등록; 3. 타사 소셜 플랫폼 등록. 성공적인 등록 후에는 일반적으로 별명, 성별, 생일 등과 같은 기본 개인 정보를 작성해야합니다.
!['[Vue warning]: Invalid prop: type check' 오류 해결 방법](https://img.php.cn/upload/article/000/887/227/169306085649427.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
"[Vuewarn]:Invalidprop:typecheck" 오류를 수정하는 방법 Vue.js는 사용자 인터페이스 구축에 널리 사용되는 JavaScript 프레임워크입니다. Vue.js를 사용하여 애플리케이션을 개발할 때 때때로 "[Vuewarn]:Invalidprop:typecheck"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 일반적으로 구성 요소의 속성을 잘못 사용하여 발생합니다.

1) 아이디어를 열고 SpringBoot 프로젝트 생성을 시작합니다. 2) SpringInitializr을 선택하고 적절한 jdk 버전을 선택한 후 Next를 클릭합니다. Type 옵션으로 작업할 때 선택할 수 있는 프로젝트 유형은 MavenProject(GenerateaMavenbasedprojectarchive) MavenPOM(GenerateaMavenpom. xml) GradleProject(GenerateaGradlebasedprojectarchive) )GradleConfig(GenerateaGradlebuildfile

Abstract Redis는 다양한 시나리오에서 널리 사용되는 오픈 소스 고성능 키-값 데이터베이스입니다. Redis에서는 데이터 유형(type)과 인코딩(encoding)이 매우 중요한 개념입니다. 이 블로그에서는 Redis에서 지원하는 데이터 유형과 해당 인코딩 방법 및 기본 구현 원칙을 자세히 소개합니다. Redis 키의 내부 인코딩을 보려면 Redis 명령 OBJECTENCODINGkey를 사용할 수 있습니다. 그 중 key 는 조회하려는 키 이름입니다. 예를 들어 mykey라는 키의 내부 인코딩을 쿼리하려면 다음 명령을 실행할 수 있습니다. 127.0.0.1:6379>objectencodin
