您的位置:程序门 -> web 开发 -> php



如用aa@bb.com 发邮件的问题.大家帮我看看  


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如用aa@bb.com 发邮件的问题.大家帮我看看
发表于:2008-01-22 15:56:16 楼主
aa@bb.com       是用google企业邮局搞的,www.google.com/a/bb.com  

现在问题是怎么设置google企业邮局,让我们网站通过aa@bb.com       发邮件?  

<?php  
/**********       smtp服务器       **********/  
$smtpserver       =       "smtp.gmail.com";  

/**********       smtp服务器端口       **********/  
$smtpserverport       =25;  

/**********       smtp服务器的用户邮箱       **********/  
$smtpusermail       =       "aa@bb.com";  

/**********       smtp服务器的用户帐号       **********/  
$smtpuser       =       "aa@bb.com";  

/**********       smtp服务器的用户密码       **********/  
$smtppass       =       "111111";  

?>  
发表于:2008-01-22 17:24:091楼 得分:0
<?php
class   smtp{
        /*   public   variables   */
        var   $smtp_port;
        var   $time_out;
        var   $host_name;
        var   $log_file;
        var   $relay_host;
        var   $debug;
        var   $auth;
        var   $user;
        var   $pass;
var   $smtp_use   =   1;
        /*   private   variables   */
        var   $sock;
        /*   constractor   */
        function   smtp($relay_host   =   " ",   $smtp_port   =   25,   $auth   =   true,$user,$pass)   {
$this-> debug   =   false;
$this-> smtp_port   =   $smtp_port;
$this-> relay_host   =   $relay_host;
$this-> time_out   =   30;   //is   used   in   fsockopen()
#
$this-> auth   =   $auth;//auth
$this-> user   =   $user;
$this-> pass   =   $pass;
#
$this-> host_name   =   "localhost ";   //is   used   in   helo   command
$this-> log_file   =   " ";
$this-> sock   =   false;
        }

        /*   main   function   */
        function   sendmail($to,   $subject   =   " ",   $body   =   " ",   $from   =   "faisun@sina.com ",     $mailtype= "txt ",   $cc   =   " ",   $bcc   =   " ",   $additional_headers   =   " "){
$mail_from   =   $this-> get_address($this-> strip_comment($from));
$body   =   ereg_replace( "(^ ¦(\r\n))(\.) ",   "\1.\3 ",   $body);
if(!$this-> smtp_use){
return   @mail($to,$subject,$body, "from:   $from < ".$from. "> ");
}
$header   .=   "mime-version:1.0\r\n ";
if($mailtype== "html "){
$header   .=   "content-type:text/html\r\n ";
}
        $header   .=   "to:   ".$to. "\r\n ";
        if   ($cc   !=   " ")   {
        $header   .=   "cc:   ".$cc. "\r\n ";
        }
$header   .=   "from:   $from < ".$from. "> \r\n ";
$header   .=   "subject:   ".$subject. "\r\n ";
$header   .=   $additional_headers;
$header   .=   "date:   ".date( "r "). "\r\n ";
$header   .=   "x-mailer:by   redhat   (php/ ".phpversion(). ")\r\n ";
list($msec,   $sec)   =   explode( "   ",   microtime());
$header   .=   "message-id:   < ".date( "ymdhis ",   $sec). ". ".($msec*1000000). ". ".$mail_from. "> \r\n ";
$to   =   explode( ", ",   $this-> strip_comment($to));
if   ($cc   !=   " ")   {
$to   =   array_merge($to,   explode( ", ",   $this-> strip_comment($cc)));
}
if   ($bcc   !=   " ")   {
$to   =   array_merge($to,   explode( ", ",   $this-> strip_comment($bcc)));
}
$sent   =   true;
foreach   ($to   as   $rcpt_to)   {
$rcpt_to   =   $this-> get_address($rcpt_to);
if   (!$this-> smtp_sockopen($rcpt_to))   {
$this-> log_write( "error:   cannot   send   email   to   ".$rcpt_to. "\n ");
$sent   =   false;
continue;
}
if($this-> smtp_send($this-> host_name,   $mail_from,   $rcpt_to,   $header,   $body)){
$this-> log_write( "e-mail   has   been   sent   to   < ".$rcpt_to. "> \n ");
}else{
$this-> log_write( "error:   cannot   send   email   to   < ".$rcpt_to. "> \n ");
$sent   =   false;
}
fclose($this-> sock);
$this-> log_write( "disconnected   from   remote   host\n ");
}
return   $sent;
        }

        /*   private   functions   */
        function   smtp_send($helo,   $from,   $to,   $header,   $body   =   " "){
if   (!$this-> smtp_putcmd( "helo ",   $helo))   {
return   $this-> smtp_error( "sending   helo   command ");
        }
#auth
        if($this-> auth){
        if   (!$this-> smtp_putcmd( "auth   login ",   base64_encode($this-> user)))   {
        return   $this-> smtp_error( "sending   helo   command ");
        }
        if   (!$this-> smtp_putcmd( " ",   base64_encode($this-> pass)))   {
        return   $this-> smtp_error( "sending   helo   command ");
        }
        }
#
        if   (!$this-> smtp_putcmd( "mail ",   "from: < ".$from. "> "))   {
        return   $this-> smtp_error( "sending   mail   from   command ");
        }
        if   (!$this-> smtp_putcmd( "rcpt ",   "to: < ".$to. "> "))   {
        return   $this-> smtp_error( "sending   rcpt   to   command ");
        }
        if   (!$this-> smtp_putcmd( "data "))   {
        return   $this-> smtp_error( "sending   data   command ");
        }
        if   (!$this-> smtp_message($header,   $body))   {
        return   $this-> smtp_error( "sending   message ");
        }
        if   (!$this-> smtp_eom())   {
        return   $this-> smtp_error( "sending   <cr> <lf> . <cr> <lf>   [eom] ");
        }
        if   (!$this-> smtp_putcmd( "quit "))   {
        return   $this-> smtp_error( "sending   quit   command ");
        }
        return   true;
        }

        function   smtp_sockopen($address)   {
        if   ($this-> relay_host   ==   " ")   {
        return   $this-> smtp_sockopen_mx($address);
        }else{
        return   $this-> smtp_sockopen_relay();
        }
        }

        function   smtp_sockopen_relay()   {
        $this-> log_write( "trying   to   ".$this-> relay_host. ": ".$this-> smtp_port. "\n ");
        $this-> sock   =   @fsockopen($this-> relay_host,   $this-> smtp_port,   $errno,   $errstr,   $this-> time_out);
        if   (!($this-> sock   &&   $this-> smtp_ok()))   {
        $this-> log_write( "error:   cannot   connenct   to   relay   host   ".$this-> relay_host. "\n ");
        $this-> log_write( "error:   ".$errstr. "   ( ".$errno. ")\n ");
        return   false;
        }
        $this-> log_write( "connected   to   relay   host   ".$this-> relay_host. "\n ");
        return   true;;
        }
        function   smtp_sockopen_mx($address)   {
        $domain   =   ereg_replace( "^.+@([^@]+)$ ",   "\1 ",   $address);
        if   (!@getmxrr($domain,   $mxhosts))   {
        $this-> log_write( "error:   cannot   resolve   mx   \ " ".$domain. "\ "\n ");
        return   false;
        }
        foreach   ($mxhosts   as   $host)   {
        $this-> log_write( "trying   to   ".$host. ": ".$this-> smtp_port. "\n ");
        $this-> sock   =   @fsockopen($host,   $this-> smtp_port,   $errno,   $errstr,   $this-> time_out);
        if   (!($this-> sock   &&   $this-> smtp_ok()))   {
        $this-> log_write( "warning:   cannot   connect   to   mx   host   ".$host. "\n ");
        $this-> log_write( "error:   ".$errstr. "   ( ".$errno. ")\n ");
        continue;
}
        $this-> log_write( "connected   to   mx   host   ".$host. "\n ");
        return   true;
        }
        $this-> log_write( "error:   cannot   connect   to   any   mx   hosts   ( ".implode( ",   ",   $mxhosts). ")\n ");
        return   false;
        }

        function   smtp_message($header,   $body)   {
        fputs($this-> sock,   $header. "\r\n ".$body);
        $this-> smtp_debug( ">   ".str_replace( "\r\n ",   "\n ". ">   ",   $header. "\n>   ".$body. "\n>   "));
        return   true;
        }

        function   smtp_eom()   {
        fputs($this-> sock,   "\r\n.\r\n ");
        $this-> smtp_debug( ".   [eom]\n ");
        return   $this-> smtp_ok();
        }
        function   smtp_ok()
        {
        $response   =   str_replace( "\r\n ",   " ",   fgets($this-> sock,   512));
$this-> smtp_debug($response. "\n ");
        if   (!ereg( "^[23] ",   $response))   {
        fputs($this-> sock,   "quit\r\n ");
        fgets($this-> sock,   512);
        $this-> log_write( "error:   remote   host   returned   \ " ".$response. "\ "\n ");
        return   false;
        }
        return   true;
        }

        function   smtp_putcmd($cmd,   $arg   =   " ")   {
        if   ($arg   !=   " ")   {
        if($cmd== " ")   $cmd   =   $arg;
        else   $cmd   =   $cmd. "   ".$arg;
        }
        fputs($this-> sock,   $cmd. "\r\n ");
        $this-> smtp_debug( ">   ".$cmd. "\n ");
        return   $this-> smtp_ok();
        }

        function   smtp_error($string)   {
        $this-> log_write( "error:   error   occurred   while   ".$string. ".\n ");
        return   false;
        }
        function   log_write($message)   {
        $this-> smtp_debug($message);
        if   ($this-> log_file   ==   " ")   {
        return   true;
        }
        $message   =   date( "m   d   h:i:s   ").get_current_user(). "[ ".getmypid(). "]:   ".$message;
if   (!@file_exists($this-> log_file)   ¦ ¦   !($fp   =   @fopen($this-> log_file,   "a ")))   {
$this-> smtp_debug( "warning:   cannot   open   log   file   \ " ".$this-> log_file. "\ "\n ");
return   false;;
}
flock($fp,   lock_ex);
fputs($fp,   $message);
fclose($fp);
return   true;
        }

        function   strip_comment($address)   {
$comment   =   "\([^()]*\) ";
while   (ereg($comment,   $address))   {
$address   =   ereg_replace($comment,   " ",   $address);
}
return   $address;
        }

        function   get_address($address)   {
$address   =   ereg_replace( "([   \t\r\n])+ ",   " ",   $address);
$address   =   ereg_replace( "^.* <(.+)> .*$ ",   "\1 ",   $address);
return   $address;
        }

        function   smtp_debug($message)   {
if   ($this-> debug)   {
echo   $message;
}
}
}
?>
发表于:2008-01-22 17:24:572楼 得分:0
<?
        /*
        这是一个测试程序!!!
        请按照说明设置好以下的参数,以下是以tom.com的用户为例设置好的.
        ##########################################
        $smtpemailto   =   "service@108108.com";//发送给谁
        $mailsubject   =   "test   subject";//邮件主题
        $mailbody   =   "$smtpserver   $smtpserverport   $smtpusermail   $smtpuser   $smtppass <h1> this   is   a   test   mail </h1> ";//邮件内容
        $mailtype   =   "txt";//邮件格式(html/txt),txt为文本邮件
        ##########################################
*/
include(dirname(__file__)."/smtpsetting.php");
        $smtp   =   new   smtp($smtpsetting['smtpserver'],$smtpsetting['smtpserverport'],$smtpsetting['smtpauth'],$smtpsetting['smtpaccount'],$smtpsetting['smtppassword']);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
        $smtp-> smtp_use     =   $smtpsetting['smtpuse'];

//$smtp-> debug   =   true;   //是否显示发送的调试信息
        //$smtp-> sendmail($smtpemailto,   $smtpusermail,   $mailsubject,   $mailbody);
?>


快速检索

最新资讯
热门点击