search
Homephp教程php手册用PHP发送MIME邮件(三)

mime

MIME 类
  在有了这些基础之后,让我们用PHP创建和实现一个MIME邮件类。在我们的PHP库函数中,已经有了编码
所必须的工具。

  MIME类必须能够:

增加附件
对每一个独立的请求,对所附的数据进行编码
创建MIME段/头
生成一个包含MIME段/头的完整的邮件
将整个邮件作为字符串返回
用本地的邮件处理程序进行发送(或选择调用一个SMTP邮件处理程序)
  这个类叫做MIME_mail。我们将讨论类的方法,在理论与实际的差距中建立起桥梁。(阅读建议:Luis
Argerich的PHP的面向对象编程:开发大型PHP项目的方法)。为了便于阅读大部分的注释已经被去掉了。一
些方法与类的成员变量只是用于内部处理,并且已经在下面的注释中被指出来了(同时在初始的类文件中也
指出了)。


class MIME_mail {
//公有:
var $to;
var $from;
var $subject;
var $body;
var $headers = "";
var $errstr="";

var $base64_func= ''; // 如果未指定使用PHP的base64函数
var $qp_func = ''; // 此时为空

var $mailer = ""; // 将其设为有效的邮件对象的名字

?>

  这里有一些公共处理的变量(也就是,可以在脚本中直接操纵的变量)。这些变量中的大部分都是自说
明的。$headers包含了可选的想要发送给邮件处理程序的头信息。$errstr
是一个包含可读错误字符串的变
量,它可以用在调用脚本中。

  $base64_func和$qp_func是"函数处理器",用户可以进行定制。缺省地,它们被设为空串。对于$base64_func,一个空串意味着我们将使用PHP内置的base64_encode()函数...(是的!优美,不是吗!)。
Quoted Printable可以通过$qp_func被处理。在PHP中没有内置的quoted-printable
编码函数(然而,安装
了imap则可以使用imap_qprint())。在这篇文章中我们将不再讨论quoted_printable方法。


//私有:
var $mimeparts = array();

?>

  $mimeparts是一个内部数组,包含了邮件信息中各自独立的符合MIME段。请不要在这个类(或派生类)之外操纵它和其它的私有方法/变量。


// 构造函数
function MIME_mail($from="", $to="", $subject="",
$body="", $headers = "") {
$this->to = $to;
$this->from = $from;
$this->subject = $subject;
$this->body = $body;
if (is_array($headers)) {
if (sizeof($headers)>1)
$headers=join(CRLF, $headers);
else
$headers=$headers[0];
}
if ($from) {
$headers = preg_replace("!(from: ?.+?[
]?)!i", '', $headers);
}
$this->headers = chop($headers);
$this->mimeparts[] = "" ; //增加位置0
return;
}

?>

  我们拥有对象的构造函数,它使用"from"和"to"邮件地址,主题和邮件体和头作为参数。对于邮件体部
分,可以给出你将可能输入的正常邮件。最后一个参数是可选的(用户自定义)头。例如,X-Mailer:
MyMailer_1.0。请注意$headers可以是一个数组,包含了将要发给邮件发送程序的不同的头,或者只是某个
特别头的容器。你不能在$headers参数中发送From:
头,如果它被找到,这部分将自动被去掉。你可以象下
面使用多个头:array("X-Mailer: MYMailer_1.0",
"X-Organization: PHPBuilder.com")。

  $mimeparts用一个空项(索引0)创建,在后面我们将看到这样用的道理。



Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

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

在 Windows 11 上修复音频服务无响应问题的 18 种方法在 Windows 11 上修复音频服务无响应问题的 18 种方法Jun 05, 2023 pm 10:23 PM

音频输出和输入需要特定的驱动程序和服务才能在Windows11上按预期工作。这些有时最终会在后台遇到错误,从而导致音频问题,如无音频输出、缺少音频设备、音频失真等。如何修复在Windows11上没有响应的音频服务我们建议您从下面提到的修复开始,并逐步完成列表,直到您设法解决您的问题。由于Windows11上的多种原因,音频服务可能无法响应。此列表将帮助您验证和修复阻止音频服务在Windows11上响应的大多数问题。请按照以下相关部分帮助您完成该过程。方法一:重启音频服务您可能会遇

PHP中var关键字的作用和示例PHP中var关键字的作用和示例Jun 28, 2023 pm 08:58 PM

PHP中var关键字的作用和示例在PHP中,var关键字用于声明一个变量。以前的PHP版本中,使用var关键字是声明成员变量的惯用方式,现在已经不再推荐使用。然而,在某些情况下,var关键字依然会被使用。var关键字主要用于声明一个局部变量,并且会自动将该变量标记为局部作用域。这意味着该变量仅在当前的代码块中可见,并且不能在其他函数或代码块中访问。使用var

一起聊聊var、let以及const的区别(代码示例)一起聊聊var、let以及const的区别(代码示例)Jan 06, 2023 pm 04:25 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要给大家介绍了var、let以及const的区别有哪些,还有ECMAScript 和 JavaScript的关系介绍,感兴趣的朋友一起来看一下吧,希望对大家有帮助。

You can't specify target table 'table_name' for update in FROM clause - 如何解决MySQL报错:无法在FROM子句中更新目标表You can't specify target table 'table_name' for update in FROM clause - 如何解决MySQL报错:无法在FROM子句中更新目标表Oct 05, 2023 am 10:25 AM

你好,下面是一篇1500字以内的文章,标题为:Youcan'tspecifytargettable'table_name'forupdateinFROMclause-如何解决MySQL报错:无法在FROM子句中更新目标表,需要具体代码示例。在进行MySQL数据库开发过程中,我们有时会遇到以下报错信息:Youcan'tspecify

报错AttributeError(\'{0!r} object has no attribute {1!r}\'.format(type(self).__name__, k))的解决报错AttributeError(\'{0!r} object has no attribute {1!r}\'.format(type(self).__name__, k))的解决Feb 29, 2024 pm 06:40 PM

报错的原因这个错误消息表明,在python代码中,使用了一个对象(由self变量表示),但是该对象没有一个名为k的属性。这可能是由于该对象没有定义这个属性,或者是在代码中类型错误导致该对象不是预期的类型。如何解决要解决这个错误,可能需要进行以下操作之一或多个:检查代码中的错误,确保self变量引用的对象具有名为k的属性。检查代码中的类型错误,确保self变量引用的对象是预期的类型。如果是缺少属性的话,需要在类里定义这个属性使用tryexcept来获取这个错误如果确定了k是类里没有定义的属性,请确

let var const代表什么含义let var const代表什么含义Nov 14, 2023 pm 03:00 PM

llet、var、const分别代表块作用域变量、函数作用域变量和常量。详细介绍:1、let,用于声明一个块作用域的变量,使用let声明的变量不能在它被声明之前被访问,这就是所谓的暂时性死区;2、var,用来声明变量的关键字,声明的变量是函数作用域或全局作用域的,不受块级作用域的限制;3、const,用来声明一个常量,一旦被赋值就不能再被重新赋值的变量,值在声明后不能被修改等。

区分var、let和const的不同特性区分var、let和const的不同特性Feb 19, 2024 pm 05:24 PM

理解var、let和const的不同特性,需要具体代码示例在JavaScript中,有多种声明变量的方式,其中最常见的包括使用var、let和const关键字。虽然它们都用于声明变量,但它们在作用域和可变性方面有着不同的特性。下面将通过具体的代码示例来解释它们之间的区别。var关键字先来看一下var关键字的用法。它是最早引入的声明变量的方式,具有全局作用域和

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment