PHP Mail()函数,用于处理HTML/文本和附件

PHP Mail()函数,用于处理HTML/文本和附件,php,email,word-wrap,Php,Email,Word Wrap,我正在使用PHP mail()函数处理电子邮件,现在我想添加新内容,但不知道如何处理 我创建的基本PHP邮件类如下所示: <?php class Send_Mail { private $to = array(); private $subject = null; private $from = null; private $replyTo = null; private $type = self::TEXT; const HTML =

我正在使用PHP mail()函数处理电子邮件,现在我想添加新内容,但不知道如何处理

我创建的基本PHP邮件类如下所示:

<?php

class Send_Mail {

    private $to = array();
    private $subject = null;
    private $from = null;
    private $replyTo = null;
    private $type = self::TEXT;

    const HTML = 0;
    const TEXT = 1;

    public function __construct() {
    }

    public function setTo($array) {
        $this->to = $array;
    }

    public function setType($type) {
        if($type == self::HTML || $type == self::TEXT) {
            $this->type = $type;
        }
    }

    public function setSubject($subject) {
        $this->subject= $subject;
    }

    public function setMessage($message) {
        $this->message = $message;
    }

    public function setFrom($from) {
        $this->from = $from;
    }

    public function send() {

        if  (   $this->to == array()    || 
                $this->from == null     ||
                $this->message == null
            ) {
                trigger_error("The email can't be sent ! One of the mandatory fields at least isn't set !");
                return false;
        }
        else {

            $this->to       = implode(',', $this->to);

            $this->subject = ($this->subject == null) ? "" : $this->subject;

            $headers    = array();
            $headers[]  = "MIME-Version: 1.0" . "\r\n";

            if($this->type == self::HTML) {
                $headers[]  = "Content-type: text/html; charset=UTF-8" . "\r\n";
            } else {
                $headers[]  = "Content-type: text/plain; charset=UTF-8" . "\r\n";
            }

            $headers[]  = "To: " . $this->to . "\r\n";
            $headers[]  = "From: " . $this->from . "\r\n";


            $headers[]  = "Reply-To: " . $this->from . "\r\n";

            return mail($this->to, $this->subject, $this->message, implode('', $headers));
        }
    }

}

*/
?>

所以基本上我不能发送附件。。我还想添加多个密件抄送和多个抄送支持


此外,正如PHP文档中所说,行的长度不应超过70个字符。如果我使用wordwrap,我可以破坏HTML标记,我该如何处理这种情况呢(

提供带有附件的电子邮件并非易事,因为您需要实现多部分正文

最好使用图书馆来解决这个问题。例如:

否则你必须自己写

有关附件,请查看此

对于其他电子邮件头,如抄送或密件抄送,请阅读此


我会寻找一个不使用
mail()的好类
函数,尤其不适用于附件等复杂任务。请使用一个像样的mailer类来代替phpMailer。另请参见以下回答:我不喜欢框架,Zend提供了大量的可能性,但它不针对特定类型的网站,因此会导致大量内存使用。在大型网站上使用它肯定会导致emory的问题,但那是另一个问题!我仍然建议你使用一个框架(在zend的情况下,你只需要使用你需要的部分,整个MVC的东西)。但是我用一些技巧改进了我的答案,让你自己的类。