用PHP发送MIME邮件(三)

2016-01-29 14:17 3 1 收藏

用PHP发送MIME邮件(三),用PHP发送MIME邮件(三)

【 tulaoshi.com - PHP 】

  作者:Kartic Krishnamurthy 译者:limodou

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

  MIME类必须能够:

增加附件
对每一个独立的请求,对所附的数据进行编码创建MIME段/头 生成一个包含MIME段/头的完整的邮件将整个邮件作为字符串返回用本地的邮件处理程序进行发送(或选择调用一个SMTP邮件处理程序)
  这个类叫做MIME_mail。我们将讨论类的方法,在理论与实际的差距中建立起桥梁。(阅读建议:Luis Argerich的PHP的面向对象编程:开发大型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方法。

<?php

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

?

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

<?php

// 构造函数
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: ?.+?[rn]?b)!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)创建,在后面我们将看到这样用的道理。  

 

来源:https://www.tulaoshi.com/n/20160129/1492959.html

延伸阅读
标签: ASP
  前一段时间有发过一个简单的JMAIL邮件发邮件的代码,今天就把这个代码做一个具体的注解,并增加了另外两个格式的代码,并举几个简单的例子: 首先是jmail.smtpmail的核心代码: <%   Set jmail = Server.CreateObject("JMAIL.SMTPMail")   '创建一个JMAIL对象   jmail.silent = true   'JMAIL不...
标签: PHP
  //这个例子可以练习关于IMAP的函数 //但是如果真的要写WEBMAIL,那么要考虑的东西就不止这些了……孤狼 login.php3   <?php   if (!$PHP_AUTH_USER) {   Header("WWW-authenticate: basic realm="邮件客户检查"");   Header("HTTP/1.0 401 Unauthorized");...
标签: Web开发
代码如下: ?php class Email { //---设置全局变量 var $mailTo = ""; // 收件人 var $mailCC = ""; // 抄送 var $mailBCC = ""; // 秘密抄送 var $mailFrom = ""; // 发件人 var $mailSubject = ""; // 主题 var $mailText = ""; // 文本格式的信件主体 var $mailHTML = ""; // html格式的信件主体 var $mailAttachments = ""; // ...
标签: PHP
  一个发送E-MAIL的脚本也许是你能够在Web 站点上找到的最普通的脚本之一了,虽然它很简单,一个邮件脚本有时会令程序员非常沮丧.PHP中有一个叫做mail()的函数,它只需要知道接收方的地址和信件主体就可以发送邮件,但是要让mail()按你的意思运行你还需要解决一些棘手的问题. 要使mail()能够运行,你必须有一个SMTP服务器以便PHP能够连接上去...
标签: Web开发
用Socket发送电子邮件在作者所申请的几个PHP 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫 无下文了。但是电子邮件在网上生活中的作用越来越大。想一想网虫上网不收邮件能叫真正的网虫吗?邮件 的作用我不想再说了,但是如果主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件 发送,但无奈...

经验教程

127

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部