php教程 php手册 用PHP发送MIME邮件(二)

用PHP发送MIME邮件(二)

Jun 21, 2016 am 09:10 AM
content quot type

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图片将被显示为一个附件图标。



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Go에서 Type 키워드의 용도는 무엇입니까? Go에서 Type 키워드의 용도는 무엇입니까? Sep 06, 2023 am 09:58 AM

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

Ubuntu 장착 모바일 하드 디스크 오류 해결: 알 수 없는 파일 시스템 유형 exfat Ubuntu 장착 모바일 하드 디스크 오류 해결: 알 수 없는 파일 시스템 유형 exfat Jan 05, 2024 pm 01:18 PM

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提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

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

Linux 유형 명령 Linux 유형 명령 Mar 20, 2024 pm 05:06 PM

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

DeepSeek 계정을 등록 할 때 어떤 정보가 필요합니까? DeepSeek 계정을 등록 할 때 어떤 정보가 필요합니까? Mar 12, 2025 pm 02:33 PM

필수 정보 : 1. 이메일 등록; 3. 타사 소셜 플랫폼 등록. 성공적인 등록 후에는 일반적으로 별명, 성별, 생일 등과 같은 기본 개인 정보를 작성해야합니다.

'[Vue warning]: Invalid prop: type check' 오류 해결 방법 '[Vue warning]: Invalid prop: type check' 오류 해결 방법 Aug 26, 2023 pm 10:40 PM

"[Vuewarn]:Invalidprop:typecheck" 오류를 수정하는 방법 Vue.js는 사용자 인터페이스 구축에 널리 사용되는 JavaScript 프레임워크입니다. Vue.js를 사용하여 애플리케이션을 개발할 때 때때로 "[Vuewarn]:Invalidprop:typecheck"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 일반적으로 구성 요소의 속성을 잘못 사용하여 발생합니다.

아이디어로 SpringBoot 프로젝트를 생성할 때 Type Selection Maven 프로젝트와 Maven Pom의 차이점은 무엇인가요? 아이디어로 SpringBoot 프로젝트를 생성할 때 Type Selection Maven 프로젝트와 Maven Pom의 차이점은 무엇인가요? May 16, 2023 pm 04:52 PM

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

Redis 유형 및 인코딩 인코딩의 원칙과 사용법은 무엇입니까? Redis 유형 및 인코딩 인코딩의 원칙과 사용법은 무엇입니까? May 29, 2023 pm 04:21 PM

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

See all articles