php开发邮件发送的困惑

php开发邮件发送的困惑

最近公司接了个销售跟踪的单子---主要是php+mysql+linux的网络应用!其中有个功能----邮件发送设计,到现在还没有完全解决。
   在邮件发送中,我们遇到smtp服务器兼容问题,这个问题困扰了我们很久。
   1.邮件发送设计思想和主要设计代码类:
   class sendmail
        {
                var $lastmessage; //记录最后返回的响应信息
                var $lastact; //最后的动作,字符串形式
                var $welcome; //用在HELO后面,欢迎用户
               
                var $smtp; //smtp服务器
                var $smtp_username;//用户名
                var $smtp_password;//用户密码
                var $port; //smtp端口号
                var $fp; //socket句柄

                var $from; //发送者

                var $debug; //是否显示调试信息
                var $isSendHtml;//是否发送HTML邮件

                //-------------------------------------------------
                // 构造类
                //-------------------------------------------------
                function sendmail()
                {                        
                //使用mail.airwap.com.cn发送邮件,可以正常发 送
                        $this->welcome="Free";
                        $this->smtp="mail.airwap.com.cn";
                        $this->smtp_username="free";
                        $this->smtp_password="123456";
                           $this->from="Free@airwap.com.cn";
                           
                           /*
                           //使用smtp.21cn.com发送邮件,不可以正常发送
                        $this->welcome="Free";
                        $this->smtp="smtp.21cn.com";
                        $this->smtp_username="77longxiao";
                        $this->smtp_password="19888";
                           $this->from="smtp.21cn.com";
                            */
                           $this->debug=false;
                        $this->isSendHtml=true;

                        $this->lastmessage="";
                        $this->lastact="";
                        $this->port="25";
                }
   .............
  }

  2.问题分析:根据上面的设计思想,用不同的smtp服务器在原理上,应该是可以正常发送email,但实际应用中出现了问题:
    1)使用mail.airwap.com.cn发送邮件,可以正常发送,发送成功的信息:
    >> Connect to SMTP server : mail.airwap.com.cn
<< 220 mail.airwap.com.cn ESMTP Sendmail 8.12.3/8.12.3; Mon, 7 Oct 2002 14:16:35 +0800 (CST)
>> EHLO Free
<< 250-mail.airwap.com.cn Hello [218.16.74.38], pleased to meet you
<< 250-ENHANCEDSTATUSCODES
<< 250-PIPELINING
<< 250-EXPN
<< 250-VERB
<< 250-8BITMIME
<< 250-SIZE
<< 250-DSN
<< 250-ETRN
<< 250-AUTH LOGIN PLAIN
<< 250-DELIVERBY
<< 250 HELP
>> AUTH LOGIN
<< 334 VXNlcm5hbWU6
>> ZnJlZQ==
<< 334 UGFzc3dvcmQ6
>> MTk4ODg=
<< 235 2.0.0 OK Authenticated
>> 认证成功可以发送邮件了
>> MAIL FROM: Free@airwap.com.cn
<< 250 2.1.0 Free@airwap.com.cn... Sender ok
>> RCPT TO:
<< 250 2.1.5 ... Recipient ok
>> DATA
<< 354 Enter mail, end with "." on a line by itself
>> To: tan-jian@163.net
From: Free@airwap.com.cn
Content-Type: text/html; charset=gb2312
Subject: Brainy@airwap.com.cn
test chinese
.
>> QUIT
<< 250 2.0.0 g976GZTE002789 Message accepted for delivery
发送成功!

    2)使用smtp.21cn.com发送邮件,不可以正常发送,错误信息提示!
      >> Connect to SMTP server : smtp.21cn.com
     << 220 21cn.com SMTP Server of AIMC 2.9.5.2 (C).
     >> HELO esales
     << 250 21cn.com, unknown.host<127.0.0.1> okay (DELAYED).
     >> MAIL FROM: 77longxiao@21cn.com
     << 250 <77longxiao@21cn.com>, sender ok.
     >> RCPT TO:
    << 553 Relay restriction.
    发送失败!

  3.smtp服务器比较:
   mail.airwap.com.cn是一家公司的架设的邮件服务器,限制不是很多
   smtp.21cn.com是标准的smtp服务器,限制较多
   如果是smtp服务器的限制问题,但在java邮件技术应用中,同样使用他们,都可以正常发送email,所以我们感到困惑
  4.问题保守的解决方案:就是采用本地的smtp服务器发送email(运行发送邮件的程序的linux系统装有smtp服务器,也就是将限制调到最低),而不是采用外界的smtp服务器,这种方案,我还没有测试过!理论上是可以通过的!

  问题综合:
  1.采用上述的设计思路,没有很好的控制smtp.21cn.com服务器接收信息的具体情况?如果能通过程序控制,问题应该可以解决!但如果程序无法控制,那么这种设计方案要修改
  2.针对同一个smtp服务器:smtp.21cn.com在设计java应用中(主要应用activation.jar和mail.jar包)可以正常发送,我有个疑问,是不是php核心有限制或者存在bug
  3.求助php邮件发送应用的成功案例

  谢谢各位高手的指教!      
请各位高手指教!谢谢!      
21cn也要 auth login