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



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wozu dient das Type-Schlüsselwort in Go? Wozu dient das Type-Schlüsselwort in Go? Sep 06, 2023 am 09:58 AM

Die Verwendung des Type-Schlüsselworts in Go umfasst das Definieren neuer Typaliase oder das Erstellen neuer Strukturtypen. Detaillierte Einführung: 1. Verwenden Sie das Schlüsselwort „type“, um einen neuen Typ zu erstellen, sondern nur einen neuen Namen für den vorhandenen Typ bereitzustellen Die Lesbarkeit des Codes macht den Code klarer. 2. Verwenden Sie das Schlüsselwort „type“, um einen neuen Strukturtyp zu erstellen, der zum Definieren benutzerdefinierter Typen mit mehreren Feldern verwendet werden kann.

Beheben Sie den Ubuntu-Fehler beim Mounten der mobilen Festplatte: unbekannter Dateisystemtyp exfat Beheben Sie den Ubuntu-Fehler beim Mounten der mobilen Festplatte: unbekannter Dateisystemtyp exfat Jan 05, 2024 pm 01:18 PM

Beim Mounten einer mobilen Festplatte durch Ubuntu tritt ein Fehler auf: mount: unlimitedfilesystemtype'exfat'. Die Verarbeitungsmethode lautet wie folgt: Ubuntu13.10 oder exfat-fuse installieren: sudoapt-getinstallexfat-fuseUbuntu13.04 oder niedriger sudoapt-add-repositoryppa:relan /exfatsudoapt-getupdatesudoapt-getinstallfuse- exfatCentOS Linux Fehler beim Mounten des USB-Datenträgers im Exfat-Format zum Laden von extfa in CentOS

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

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

Befehle vom Typ Linux Befehle vom Typ Linux Mar 20, 2024 pm 05:06 PM

In dieser Anleitung erfahren wir mehr über den Befehl „type“ unter Linux. Voraussetzungen: Um die in diesem Handbuch gezeigten Schritte ausführen zu können, benötigen Sie die folgenden Komponenten: Ein ordnungsgemäß konfiguriertes Linux-System. Erfahren Sie, wie Sie eine LinuxVM zu Test- und Lernzwecken erstellen. Grundlegendes Verständnis der Befehlszeilenschnittstelle Der Type-Befehl in Linux unterscheidet sich von anderen Linux-spezifischen Befehlen (z. B. ls, chmod, Shutdown, vi, grep, pwd usw.). Der „type“-Befehl ist integriert Bash-Funktion, die als Argument angezeigt wird. Informationen zum bereitgestellten Befehlstyp. $type Neben Bash sind auch andere Shells (Zsh, Ksh usw.) im Lieferumfang enthalten

Welche Informationen sind bei der Registrierung eines Deepseek -Kontos erforderlich? Welche Informationen sind bei der Registrierung eines Deepseek -Kontos erforderlich? Mar 12, 2025 pm 02:33 PM

Erforderliche Informationen: 1. E-Mail-Registrierung; Nach erfolgreicher Registrierung müssen Sie normalerweise einige grundlegende persönliche Daten wie Spitzname, Geschlecht, Geburtstag usw. ausfüllen.

So beheben Sie den Fehler „[Vue-Warnung]: Ungültige Requisite: Typprüfung'. So beheben Sie den Fehler „[Vue-Warnung]: Ungültige Requisite: Typprüfung'. Aug 26, 2023 pm 10:40 PM

So beheben Sie den Fehler „[Vuewarn]:Invalidprop:typecheck“ Vue.js ist ein beliebtes JavaScript-Framework zum Erstellen von Benutzeroberflächen. Bei der Entwicklung von Anwendungen mit Vue.js stoßen wir manchmal auf Fehlermeldungen, darunter „[Vuewarn]:Invalidprop:typecheck“. Dieser Fehler wird normalerweise durch eine falsche Verwendung von Attributen in der Komponente verursacht

Was ist der Unterschied zwischen Typauswahl-Maven-Projekt und Maven-Pom beim Erstellen eines SpringBoot-Projekts mit Idee? Was ist der Unterschied zwischen Typauswahl-Maven-Projekt und Maven-Pom beim Erstellen eines SpringBoot-Projekts mit Idee? May 16, 2023 pm 04:52 PM

1) Öffnen Sie die Idee und beginnen Sie mit der Erstellung des SpringBoot-Projekts. 2) Wählen Sie SpringInitializr, wählen Sie die entsprechende JDK-Version aus und klicken Sie auf Weiter. Bei der Auswahl der Option „Typ“ stehen vier Projekttypen zur Auswahl: MavenProject (GenerateaMavenbasedprojectarchive) MavenPOM (GenerateaMavenpom. xml) GradleProject (GenerateaGradlebasedprojectarchive) )GradleConfig(GenerateaGradlebuildfile

Was sind die Prinzipien und die Verwendung der Redis-Typ- und Kodierungskodierung? Was sind die Prinzipien und die Verwendung der Redis-Typ- und Kodierungskodierung? May 29, 2023 pm 04:21 PM

Zusammenfassung Redis ist eine Open-Source-Hochleistungs-Schlüsselwertdatenbank, die in verschiedenen Szenarien weit verbreitet ist. In Redis sind Datentyp (Typ) und Kodierung (Kodierung) sehr wichtige Konzepte. In diesem Blog werden die von Redis unterstützten Datentypen sowie die entsprechenden Codierungsmethoden und zugrunde liegenden Implementierungsprinzipien ausführlich vorgestellt. Um die interne Codierung eines Redis-Schlüssels anzuzeigen, können Sie den Redis-Befehl OBJECTENCODINGkey verwenden. Unter diesen ist der Schlüssel der Schlüsselname, den Sie abfragen möchten. Wenn Sie beispielsweise die interne Kodierung eines Schlüssels namens mykey abfragen möchten, können Sie den folgenden Befehl ausführen: 127.0.0.1:6379&gt;objectencodin

See all articles