我想实现的功能是
给甲发一封邮件 同时抄送一份发给乙 
这样用email函数能实现么
本地没有邮件服务器 不能调试 求问

解决方案 »

  1.   

    header就可以实现抄送,密送之类的了
      

  2.   

    这是我之前写的一个邮件类,可参考
    <?
    class BMail{ /**
      * <p>以SMTP的方式发送邮件</p>
      *
      * @return true,false - 是否成功发送bool
      * @param $mailcfg array - 邮件发送的配置
      * @param $mail array - 邮件的内容
      */    public static function send($mailcfg,$mail){
            //无法连接上smtp服务器
            if(!$fp = fsockopen($mailcfg['server'], $mailcfg['port'], $errno, $errstr, 50)) {
                //echo ('无法连接');
                return false;
            }
            stream_set_blocking($fp, true);
            $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != '220') {
                $error_msg = "$mailcfg[server]:$mailcfg[port] CONNECT - $lastmessage";
                //echo ('连接错误');
                return false;
            }
            //发送用户名
            fputs($fp, ($mailcfg['auth'] ? 'EHLO' : 'HELO')." ".$mailcfg['auth_username']."\r\n");
            $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
               
                $error_msg = "($mailcfg[server]:$mailcfg[port]) HELO/EHLO - $lastmessage";
                //echo ('身份错误');
                return false;
            }
            while(1) {
                if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {break;}
                $lastmessage = fgets($fp, 512);
            }
            //登陆验证
            if($mailcfg['auth']) {
                fputs($fp, "AUTH LOGIN\r\n");
                $lastmessage = fgets($fp, 512);
                if(substr($lastmessage, 0, 3) != 334) {
                    //登陆模式错误
                    $error_msg = "($mailcfg[server]:$mailcfg[port]) AUTH LOGIN - $lastmessage";
                    //echo ('登陆模式错误');
                    return false;
                }
                fputs($fp, base64_encode($mailcfg['auth_username'])."\r\n");
                $lastmessage = fgets($fp, 512);
                if(substr($lastmessage, 0, 3) != 334) {
                    //用户名不正确
                    $error_msg = "($mailcfg[server]:$mailcfg[port]) USERNAME - $lastmessage";
                    //echo ('用户名不正确');
                    return false;
                }
                fputs($fp, base64_encode($mailcfg['auth_password'])."\r\n");
                $lastmessage = fgets($fp, 512);
                if(substr($lastmessage, 0, 3) != 235) {
                    //用户密码不正确
                    $error_msg = "($mailcfg[server]:$mailcfg[port]) PASSWORD - $lastmessage";
                    //echo ('用户密码不正确');
                    return false;
                }
               
                $email_from = $mailcfg['from'];
            }
            fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");
            $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != 250) {
                //发送地址错误
                $error_msg = "($mailcfg[server]:$mailcfg[port]) MAIL FROM - $lastmessage";
                //echo ('发送地址错误');
                return false;     
            }
       
            $email_to=$mail['to'];
            //循环对逐个收件人发送
            foreach(explode(',', $email_to) as $touser) {
                $touser = trim($touser);
                if($touser) {
                    fputs($fp, "RCPT TO: <$touser>\r\n");
                    $lastmessage = fgets($fp, 512);
                    if(substr($lastmessage, 0, 3) != 250) {
                        //目标地址错误
                        $error_msg = "($mailcfg[server]:$mailcfg[port]) RCPT TO - $lastmessage";
                        //echo ('目标地址错误');
                        return false;
                    }
                }
            }
            fputs($fp, "DATA\r\n");
            $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != 354) {
                $error_msg = "($mailcfg[server]:$mailcfg[port]) DATA - $lastmessage";
                //echo ('数据错误');
                return false;
            }
       
            $from = $mailcfg['from'];
            $fromname = $mailcfg['fromname'];
            $subject = $mail['subject'];
            $content = $mail['content'];
           
            $charset = $mailcfg['charset'];
            $headers = "MIME-Version: 1.0\r\nContent-type: $mailcfg[type]; charset=".$charset."\r\n\r\n";//头文件避免出现乱码
           
            //构建邮件数据
            $str="To: $email_to\r\nFrom: $fromname <$from>\r\nSubject: ".$subject."\r\n".$headers.$content."\r\n.\r\n";
            fputs($fp, "$str\r\n");
            fputs($fp, "QUIT\r\n");    
            return true;
        }}/********
    //以下为调用例子
    define("REG_SMTP_HOST",   "smtp.163.com");//如果是ssl类型的smtp,改成'ssl://smtp.163.com' 即可
    define("REG_SMTP_USER",   "username");
    define("REG_SMTP_PASS",   "password");
    define("REG_SMTP_FROM",   "[email protected]");require_once('b-mail.php');$mailcfg = array(
                  'server'=>REG_SMTP_HOST,
                  'port'=>'25',//smtp服务器端口
                  'auth'=>1,
                  'from'=>REG_SMTP_FROM,
                  'charset'=>'utf-8',//信件编码
                  'type'=>'text/html',//发送的类型是html格式
                  //'type'=>'text/plain',//发送的类型是文本格式
                  'fromname'=>'囍鹊网(xique.com)',
                  'auth_username'=>REG_SMTP_USER,
                  'auth_password'=>REG_SMTP_PASS);
                 $mail = array(
               'to'=>'[email protected]',
               'subject'=>'世纪佳缘',
               'content'=>'测试用~~');
                     
    $rst = BMail::send($mailcfg,$mail);
    if(!$rst){
        echo 'mail fail';
    }else{
        echo 'mail succ!';
    }
    **********/
    ?> 
    $email_to=$mail['to'];
    //循环对逐个收件人发送,对多人直接用,号分隔开就行了!
      

  3.   

    请问怎么使用header呢 这个参数我还不大明白
    我常见有设置
    FROM:
    reply to:
    这两项,分别代表什么
      

  4.   

    PHPMAILER里好像有抄送这个函数的/**
         * Adds a "Cc" address. Note: this function works
         * with the SMTP mailer on win32, not with the "mail"
         * mailer.  
         * @param string $address
         * @param string $name
         * @return void
        */
        function AddCC($address, $name = "") {
            $cur = count($this->cc);
            $this->cc[$cur][0] = trim($address);
            $this->cc[$cur][1] = $name;
        }
      

  5.   

           $str="To: $email_to\r\nFrom: $fromname <$from>\r\nSubject: ".$subject."\r\n".$headers.$content."\r\n.\r\n";
            fputs($fp, "$str\r\n");
            fputs($fp, "QUIT\r\n");
    参考这个
    To:接收方
    from:发送方