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



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Selesaikan ralat cakera keras mudah alih pemasangan Ubuntu: exfat jenis sistem fail tidak diketahui Selesaikan ralat cakera keras mudah alih pemasangan Ubuntu: exfat jenis sistem fail tidak diketahui Jan 05, 2024 pm 01:18 PM

Ralat berlaku apabila ubuntu memasang cakera keras mudah alih: mount: unknownfilesystemtype'exfat' Kaedah pemprosesan adalah seperti berikut: Ubuntu13.10 atau install exfat-fuse: sudoapt-getinstallexfat-fuseUbuntu13.04 atau di bawah sudoapt-add-repositoryppa:relan. /exfatsudoapt-getupdatesudoapt-getinstallfuse- exfatCentOS Linux memasang format exfat penyelesaian ralat cakera USB untuk memuatkan extfa dalam CentOS

Apakah kegunaan kata kunci Jenis dalam Go? Apakah kegunaan kata kunci Jenis dalam Go? Sep 06, 2023 am 09:58 AM

Penggunaan kata kunci Jenis dalam Go termasuk menentukan alias jenis baharu atau mencipta jenis struktur baharu. Pengenalan terperinci: 1. Jenis alias Gunakan kata kunci "jenis" untuk mencipta alias untuk jenis sedia ada, tetapi hanya memberikan nama baharu untuk jenis alias yang sedia ada kebolehbacaan kod menjadikan kod lebih jelas;

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

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

Perintah jenis Linux Perintah jenis Linux Mar 20, 2024 pm 05:06 PM

Dalam panduan ini, kita akan mengetahui lebih lanjut tentang arahan "jenis" dalam Linux. Prasyarat: Untuk melaksanakan langkah yang ditunjukkan dalam panduan ini, anda memerlukan komponen berikut: Sistem Linux yang dikonfigurasikan dengan betul. Lihat cara membuat LinuxVM untuk tujuan ujian dan pembelajaran. Pemahaman asas tentang antara muka baris arahan Perintah Type dalam Linux adalah berbeza daripada arahan khusus Linux yang lain (seperti: ls, chmod, shutdown, vi, grep, pwd, dll. Perintah "type" adalah terbina dalam Fungsi Bash yang dipaparkan sebagai hujah Maklumat tentang jenis arahan yang disediakan. $type Selain Bash, cengkerang lain (Zsh, Ksh, dll.) turut disertakan

Maklumat apa yang diperlukan semasa mendaftarkan akaun DeepSeek? Maklumat apa yang diperlukan semasa mendaftarkan akaun DeepSeek? Mar 12, 2025 pm 02:33 PM

Maklumat yang diperlukan: 1. Pendaftaran e-mel; Selepas pendaftaran yang berjaya, anda biasanya perlu mengisi beberapa maklumat peribadi asas, seperti nama samaran, jantina, ulang tahun, dll.

Apakah prinsip dan penggunaan jenis Redis dan pengekodan pengekodan? Apakah prinsip dan penggunaan jenis Redis dan pengekodan pengekodan? May 29, 2023 pm 04:21 PM

Abstrak Redis ialah sumber terbuka, pangkalan data nilai kunci berprestasi tinggi yang digunakan secara meluas dalam pelbagai senario. Dalam Redis, jenis data (jenis) dan pengekodan (pengekodan) adalah konsep yang sangat penting. Blog ini akan memperkenalkan secara terperinci jenis data yang disokong oleh Redis serta kaedah pengekodan yang sepadan dan prinsip pelaksanaan asas. Untuk melihat pengekodan dalaman kunci Redis, anda boleh menggunakan perintah Redis OBJECTENCODINGkey. Antaranya, kunci ialah nama kunci yang anda ingin tanya. Contohnya, jika anda ingin menanyakan pengekodan dalaman kunci bernama mykey, anda boleh melaksanakan perintah berikut: 127.0.0.1:6379&gt;objectencodin

Apakah perbezaan antara projek maven pemilihan Jenis dan maven pom apabila mencipta projek SpringBoot dengan idea? Apakah perbezaan antara projek maven pemilihan Jenis dan maven pom apabila mencipta projek SpringBoot dengan idea? May 16, 2023 pm 04:52 PM

1) Buka idea dan mula mencipta projek SpringBoot 2) Pilih SpringInitializr, pilih versi jdk yang sesuai, dan klik Seterusnya Apabila beroperasi pada pilihan Jenis, terdapat empat jenis projek untuk dipilih: MavenProject (GenerateaMavenbasedprojectarchive) MavenPOM (GenerateaMavenpom. xml) GradleProject (GenerateaGradlebasedprojectarchive) )GradleConfig(GenerateaGradlebuildfile

Cara menyelesaikan ralat '[Vue warn]: prop tidak sah: type check'. Cara menyelesaikan ralat '[Vue warn]: prop tidak sah: type check'. Aug 26, 2023 pm 10:40 PM

Cara Membetulkan Ralat “[Vuewarn]:Invalidprop:typecheck” Vue.js ialah rangka kerja JavaScript yang popular untuk membina antara muka pengguna. Apabila membangunkan aplikasi menggunakan Vue.js, kadangkala kami menghadapi beberapa mesej ralat, salah satunya ialah "[Vuewarn]:Invalidprop:typecheck". Ralat ini biasanya disebabkan oleh penggunaan atribut yang salah dalam komponen

See all articles