我是新手,还在学,不知道那个类比较好

解决方案 »

  1.   

    html里的 mailto:[email protected]
    这个不就行了吗
      

  2.   

    phpmailer
    http://baike.baidu.com/view/2341560.htm
      

  3.   

    仅供参考:
    注意把各函数都调用一遍,打出其结果,取你想要的用。<?php
    class Mail_mimePart {
        var $_encoding;
        var $_subparts;
        var $_encoded;
        var $_headers;
        var $_body;
        function Mail_mimePart($body = '', $params = array())
        {
            if (!defined('MAIL_MIMEPART_CRLF')) {
                define('MAIL_MIMEPART_CRLF', defined('MAIL_MIME_CRLF') ? MAIL_MIME_CRLF : "\r\n", TRUE);
            }        $contentType = array();
            $contentDisp = array();
            foreach ($params as $key => $value) {
                switch ($key) {
                    case 'content_type':
                        $contentType['type'] = $value;
                        //$headers['Content-Type'] = $value . (isset($charset) ? '; charset="' . $charset . '"' : '');
                        break;                case 'encoding':
                        $this->_encoding = $value;
                        $headers['Content-Transfer-Encoding'] = $value;
                        break;                case 'cid':
                        $headers['Content-ID'] = '<' . $value . '>';
                        break;                case 'disposition':
                        $contentDisp['disp'] = $value;
                        break;                case 'dfilename':
                        $contentDisp['filename'] = $value;
                        $contentType['name'] = $value;
                        break;                case 'description':
                        $headers['Content-Description'] = "attachment";
                        break;                case 'charset':
                        $contentType['charset'] = $value;
                        $contentDisp['charset'] = $value;
                        break;                case 'language':
                        $contentType['language'] = $value;
                        $contentDisp['language'] = $value;
                        break;                case 'location':
                        $headers['Content-Location'] = $value;
                        break;            }
            }
            if (isset($contentType['type'])) {
                $headers['Content-Type'] = $contentType['type'];
                if (isset($contentType['name'])) {
                    $headers['Content-Type'] .= ';' . MAIL_MIMEPART_CRLF;
                    $headers['Content-Type'] .= $this->_buildHeaderParam('name', $contentType['name'],
                                                    isset($contentType['charset']) ? $contentType['charset'] : 'US-ASCII',
                                                    isset($contentType['language']) ? $contentType['language'] : NULL);
                } elseif (isset($contentType['charset'])) {
                    $headers['Content-Type'] .= "; charset=\"{$contentType['charset']}\"";
                }
            }
            if (isset($contentDisp['disp'])) {
                $headers['Content-Disposition'] = $contentDisp['disp'];
                if (isset($contentDisp['filename'])) {
                    $headers['Content-Disposition'] .= ';' . MAIL_MIMEPART_CRLF;
                    $headers['Content-Disposition'] .= $this->_buildHeaderParam('filename', $contentDisp['filename'],
                                                    isset($contentDisp['charset']) ? $contentDisp['charset'] : 'US-ASCII',
                                                    isset($contentDisp['language']) ? $contentDisp['language'] : NULL);
                }
            }        // Default content-type
            if (!isset($headers['Content-Type'])) {
                $headers['Content-Type'] = 'text/plain';
            }        //Default encoding
            if (!isset($this->_encoding)) {
                $this->_encoding = '7bit';
            }        // Assign stuff to member variables
            $this->_encoded  = array();
            $this->_headers  = $headers;
            $this->_body     = $body;
        }
        function encode()
        {
            $encoded =& $this->_encoded;        if (count($this->_subparts)) {
                srand((double)microtime()*1000000);
                //边界符
                $boundary = '=_' . md5(rand() . microtime());
                $this->_headers['Content-Type'] .= ';' . MAIL_MIMEPART_CRLF . "\t" . 'boundary="' . $boundary . '"';            // Add body parts to $subparts
                for ($i = 0; $i < count($this->_subparts); $i++) {
                    $headers = array();
                    $tmp = $this->_subparts[$i]->encode();
                    foreach ($tmp['headers'] as $key => $value) {
                        $headers[] = $key . ': ' . $value;
                    }
                    $subparts[] = implode(MAIL_MIMEPART_CRLF, $headers) . MAIL_MIMEPART_CRLF . MAIL_MIMEPART_CRLF . $tmp['body'] . MAIL_MIMEPART_CRLF;
                }            $encoded['body'] = '--' . $boundary . MAIL_MIMEPART_CRLF .
                                   rtrim(implode('--' . $boundary . MAIL_MIMEPART_CRLF , $subparts), MAIL_MIMEPART_CRLF) . MAIL_MIMEPART_CRLF .
                                   '--' . $boundary.'--' . MAIL_MIMEPART_CRLF;        } else {
                $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding);
            }        // Add headers to $encoded
            $encoded['headers'] =& $this->_headers;        return $encoded;
        }
        function &addSubPart($body, $params)
        {
            $this->_subparts[] = new Mail_mimePart($body, $params);
            return $this->_subparts[count($this->_subparts) - 1];
        }    function _getEncodedData($data, $encoding)
        {
            switch ($encoding) {
                case '8bit':
                case '7bit':
                    return $data;
                    break;            case 'quoted-printable':
                    return $this->_quotedPrintableEncode($data);
                    break;            case 'base64':
                    return rtrim(chunk_split(base64_encode($data), 76, MAIL_MIMEPART_CRLF));
                    break;            default:
                    return $data;
            }
        }    function _quotedPrintableEncode($input , $line_max = 76)
        {
            $lines  = preg_split("/\r?\n/", $input);
            $eol    = MAIL_MIMEPART_CRLF;
            $escape = '=';
            $output = '';        while (list(, $line) = each($lines)) {            $line    = preg_split('||', $line, -1, PREG_SPLIT_NO_EMPTY);
                $linlen     = count($line);
                $newline = '';            for ($i = 0; $i < $linlen; $i++) {
                    $char = $line[$i];
                    $dec  = ord($char);                if (($dec == 32) AND ($i == ($linlen - 1))) {    // convert space at eol only
                        $char = '=20';                } elseif (($dec == 9) AND ($i == ($linlen - 1))) {  // convert tab at eol only
                        $char = '=09';
                    } elseif ($dec == 9) {
                        ; // Do nothing if a tab.
                    } elseif (($dec == 61) OR ($dec < 32 ) OR ($dec > 126)) {
                        $char = $escape . strtoupper(sprintf('%02s', dechex($dec)));
                    } elseif (($dec == 46) AND ($newline == '')) {
                        //Bug #9722: convert full-stop at bol
                        //Some Windows servers need this, won't break anything (cipri)
                        $char = '=2E';
                    }                if ((strlen($newline) + strlen($char)) >= $line_max) {        // MAIL_MIMEPART_CRLF is not counted
                        $output  .= $newline . $escape . $eol;                    // soft line break; " =\r\n" is okay
                        $newline  = '';
                    }
                    $newline .= $char;
                } // end of for
                $output .= $newline . $eol;
            }
            $output = substr($output, 0, -1 * strlen($eol)); // Don't want last crlf
            return $output;
        }    function _buildHeaderParam($name, $value, $charset=NULL, $language=NULL, $maxLength=75)
        {
            //If we find chars to encode, or if charset or language
            //is not any of the defaults, we need to encode the value.
            $shouldEncode = 0;
            $secondAsterisk = '';
            if (preg_match('#([\x80-\xFF]){1}#', $value)) {
                $shouldEncode = 1;
            } elseif ($charset && (strtolower($charset) != 'us-ascii')) {
                $shouldEncode = 1;
            } elseif ($language && ($language != 'en' && $language != 'en-us')) {
                $shouldEncode = 1;
            }
            if ($shouldEncode) {
                $search  = array('%',   ' ',   "\t");
                $replace = array('%25', '%20', '%09');
                $encValue = str_replace($search, $replace, $value);
                $encValue = preg_replace('#([\x80-\xFF])#e', '"%" . strtoupper(dechex(ord("\1")))', $encValue);
                $value = "$charset'$language'$encValue";
                $secondAsterisk = '*';
            }
            $header = " {$name}{$secondAsterisk}=\"{$value}\"; ";
            if (strlen($header) <= $maxLength) {
                return $header;
            }        $preLength = strlen(" {$name}*0{$secondAsterisk}=\"");
            $sufLength = strlen("\";");
            $maxLength = MAX(16, $maxLength - $preLength - $sufLength - 2);
            $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|";        $headers = array();
            $headCount = 0;
            while ($value) {
                $matches = array();
                $found = preg_match($maxLengthReg, $value, $matches);
                if ($found) {
                    $headers[] = " {$name}*{$headCount}{$secondAsterisk}=\"{$matches[0]}\"";
                    $value = substr($value, strlen($matches[0]));
                } else {
                    $headers[] = " {$name}*{$headCount}{$secondAsterisk}=\"{$value}\"";
                    $value = "";
                }
                $headCount++;
            }
            $headers = implode(MAIL_MIMEPART_CRLF, $headers) . ';';
            return $headers;
        }
    } // End of class
      

  4.   

    phpmailer
    http://baike.baidu.com/view/2341560.htm这个好额