window 2000 server服务器,不能使用mail函数,怎么解决!?急!! 你可以搜索一下以前这样的文章不少的.这主要是因为你的php.ini没有配置好.在那里有一个smtp的服务器什么你没有配好. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哈哈~终于碰到我知道的问题了,Yeah!!是这样的:[mail function]SMTP = localhost ;仅用于win32系统sendmail_from = [email protected] ;仅用于win32系统;sendmail_path = ;仅用于unix, 也可支持参数(默认的是'sendmail -t -i')照样子做就OK了~嘿嘿~ 不行,那服务器要配置smtp,我可没有权限! 要使用PHP的mail函数发送邮件,首先要在php.ini中配置好,如上;再有就是配置SMTP的邮件服务器。就可以了吧 使用下面这个mail类就可以使用smtp发邮件了,支持smtp认证。<? class send_mail{ var $lastmessage; var $lastact; var $domain; var $debug; var $smtp; var $port; var $fp; var $auth; var $user; var $passwd; function send_mail($smtp, $domain="", $user, $passwd, $auth=true, $debug=false) { if(empty($smtp)) die("SMTP cannt be NULL!"); $this->smtp=$smtp; if(empty($domain)) { $this->domain=gethostbyaddr("localhost"); } else $this->domain=$domain; $this->debug=$debug; $this->lastmessage=""; $this->lastact=""; $this->port="25"; $this->auth=$auth; $this->user=$user; $this->passwd=$passwd; } function show_debug($message, $inout) { if ($this->debug) { if($inout=="in") { $m='<< '; } else $m='>> '; if(!ereg("\n$", $message)) $message .= "<br>"; $message=nl2br($message); echo "<font color=#999999>${m}${message}</font>"; } } function do_command($command, $code) { $this->lastact=$command; $this->show_debug($this->lastact, "out"); fputs ( $this->fp, $this->lastact ); //$this->lastmessage = fgets ( $this->fp, 512 ); //$this->show_debug($this->lastmessage, "in");while(true) { $this->lastmessage = fgets( $this->fp, 512 ); $this->show_debug($this->lastmessage, "in"); if(($this->lastmessage[3]==' ') or (empty($this->lastmessage))) break; } if(!ereg("^$code", $this->lastmessage)) { return false; } else return true; } function send( $to,$from,$subject,$message) { //连接服务器 $this->lastact="connect"; $this->show_debug("Connect to SMTP server : ".$this->smtp, "out"); $this->fp = fsockopen ( $this->smtp, $this->port ); if ( $this->fp ) { set_socket_blocking( $this->fp, true ); $this->lastmessage=fgets($this->fp,512); $this->show_debug($this->lastmessage, "in"); if (! ereg ( "^220", $this->lastmessage ) ) { return false; } else { if($this->auth){ $this->lastact="EHLO " . $this->domain . "\n";} else $this->lastact="HELO " . $this->domain . "\n"; //$this->lastact="HELO " . $this->domain . "\n"; if(!$this->do_command($this->lastact, "250")) { fclose($this->fp); return false; }if($this->auth) { $this->lastact="AUTH LOGIN" . "\n"; if(!$this->do_command($this->lastact, "334")) { fclose($this->fp); return false; } //回传用户名,用base64编码 $this->lastact=base64_encode($this->user) . "\n"; if(!$this->do_command($this->lastact, "334")) { fclose($this->fp); return false; } //回传口令,用base64编码 $this->lastact=base64_encode($this->passwd) . "\n"; if(!$this->do_command($this->lastact, "235")) { fclose($this->fp); return false; } } $this->lastact="MAIL FROM: $from" . "\n"; if(!$this->do_command($this->lastact, "250")) { fclose($this->fp); return false; } $this->lastact="RCPT TO: $to" . "\n"; if(!$this->do_command($this->lastact, "250")) { fclose($this->fp); return false; } //发送正文 $this->lastact="DATA\n"; if(!$this->do_command($this->lastact, "354")) { fclose($this->fp); return false; } $head="Content-Type: text/html; charset=gb2312\n"; if(!ereg($head,$message)) { $message=$head.$message; } //处理Subject头 $head="Subject: $subject\n"; if(!empty($subject) && !ereg($head, $message)) { $message = $head.$message; } //处理From头 $head="From: $from\n"; if(!empty($from) && !ereg($head, $message)) { $message = $head.$message; } //处理To头 $head="To: $to\n"; if(!empty($to) && !ereg($head, $message)) { $message = $head.$message; } //加上结束串 if(!ereg("\n\.\n", $message)) $message .= "\n.\n"; $this->show_debug($message, "out"); fputs($this->fp, $message); $this->lastact="QUIT\n"; if(!$this->do_command($this->lastact, "250")) { fclose($this->fp); return false; } } return true; } else { $this->show_debug("Connect failed!", "in"); return false; } } }$sendmail=new send_mail("smtp服务器地址","smtp服务器域名","smtp帐号","smtp密码",true);$sendmail->send("你要发的地址", "你的邮件地址", "邮件题名", 邮件内容)?> 我怎麼配置服务器smtp????我的是WIN98 用其他不需要身份验证的smpt服务器的ip地址就可以了 在PHP.INI 中配置一下就可以了,只要你给出的能SMTP服务器正常发信就没有问题了。 不能用mail()发送的话那就用socket来发送楼上给的类就是通过socket来发送的,虽然速度不如mail(),但通用性强,再复杂点可以发送附件之类的 win2000 serverIIS有一个SMTP服务器的很好用的 应该不会看看你的SMTP服务器是否运行 PHP怎么将数组的内容循环成 “链接”+“下拉选择”的样式 一个图片采集问题(费解)显示的图片不是我想要的图片, php5.2.4 bsd 6.2 apache2.2.6 sqlserver2000 在PHP页面中如何在指定文件中追加内容 求正则表达式。。匹配年月日时分秒 简单问题 关于PHP4.0运行是占用服务器CPU资源的问题。 请教一个局域网,网站浏览的问题? Flash 中如何用PHP 怎么回事??? 如何计算页面运行时间 那位说一下怎么使用正则表达式。
是这样的:
[mail function]
SMTP = localhost
;仅用于win32系统
sendmail_from = [email protected]
;仅用于win32系统
;sendmail_path =
;仅用于unix, 也可支持参数(默认的是'sendmail -t -i')照样子做就OK了~嘿嘿~
再有就是配置SMTP的邮件服务器。
就可以了吧
<?
class send_mail
{
var $lastmessage;
var $lastact;
var $domain;
var $debug;
var $smtp;
var $port;
var $fp;
var $auth;
var $user;
var $passwd;
function send_mail($smtp, $domain="", $user, $passwd, $auth=true, $debug=false)
{
if(empty($smtp)) die("SMTP cannt be NULL!");
$this->smtp=$smtp;
if(empty($domain))
{
$this->domain=gethostbyaddr("localhost");
}
else
$this->domain=$domain;
$this->debug=$debug;
$this->lastmessage="";
$this->lastact="";
$this->port="25";
$this->auth=$auth;
$this->user=$user;
$this->passwd=$passwd;
}
function show_debug($message, $inout)
{
if ($this->debug)
{
if($inout=="in")
{
$m='<< ';
}
else
$m='>> ';
if(!ereg("\n$", $message))
$message .= "<br>";
$message=nl2br($message);
echo "<font color=#999999>${m}${message}</font>";
}
}
function do_command($command, $code)
{
$this->lastact=$command;
$this->show_debug($this->lastact, "out");
fputs ( $this->fp, $this->lastact );
//$this->lastmessage = fgets ( $this->fp, 512 );
//$this->show_debug($this->lastmessage, "in");while(true)
{
$this->lastmessage = fgets( $this->fp, 512 );
$this->show_debug($this->lastmessage, "in");
if(($this->lastmessage[3]==' ') or (empty($this->lastmessage)))
break;
}
if(!ereg("^$code", $this->lastmessage))
{
return false;
}
else
return true;
}
function send( $to,$from,$subject,$message)
{
//连接服务器
$this->lastact="connect";
$this->show_debug("Connect to SMTP server : ".$this->smtp, "out");
$this->fp = fsockopen ( $this->smtp, $this->port );
if ( $this->fp )
{
set_socket_blocking( $this->fp, true );
$this->lastmessage=fgets($this->fp,512);
$this->show_debug($this->lastmessage, "in");
if (! ereg ( "^220", $this->lastmessage ) )
{
return false;
}
else
{
if($this->auth)
{
$this->lastact="EHLO " . $this->domain . "\n";
}
else
$this->lastact="HELO " . $this->domain . "\n";
//$this->lastact="HELO " . $this->domain . "\n";
if(!$this->do_command($this->lastact, "250"))
{
fclose($this->fp);
return false;
}
if($this->auth)
{
$this->lastact="AUTH LOGIN" . "\n";
if(!$this->do_command($this->lastact, "334"))
{
fclose($this->fp);
return false;
}
//回传用户名,用base64编码
$this->lastact=base64_encode($this->user) . "\n";
if(!$this->do_command($this->lastact, "334"))
{
fclose($this->fp);
return false;
}
//回传口令,用base64编码
$this->lastact=base64_encode($this->passwd) . "\n";
if(!$this->do_command($this->lastact, "235"))
{
fclose($this->fp);
return false;
}
}
$this->lastact="MAIL FROM: $from" . "\n";
if(!$this->do_command($this->lastact, "250"))
{
fclose($this->fp);
return false;
}
$this->lastact="RCPT TO: $to" . "\n";
if(!$this->do_command($this->lastact, "250"))
{
fclose($this->fp);
return false;
}
//发送正文
$this->lastact="DATA\n";
if(!$this->do_command($this->lastact, "354"))
{
fclose($this->fp);
return false;
}
$head="Content-Type: text/html; charset=gb2312\n";
if(!ereg($head,$message))
{
$message=$head.$message;
}
//处理Subject头
$head="Subject: $subject\n";
if(!empty($subject) && !ereg($head, $message))
{
$message = $head.$message;
}
//处理From头
$head="From: $from\n";
if(!empty($from) && !ereg($head, $message))
{
$message = $head.$message;
}
//处理To头
$head="To: $to\n";
if(!empty($to) && !ereg($head, $message))
{
$message = $head.$message;
}
//加上结束串
if(!ereg("\n\.\n", $message))
$message .= "\n.\n";
$this->show_debug($message, "out");
fputs($this->fp, $message);
$this->lastact="QUIT\n";
if(!$this->do_command($this->lastact, "250"))
{
fclose($this->fp);
return false;
}
}
return true;
}
else
{
$this->show_debug("Connect failed!", "in");
return false;
}
}
}
$sendmail=new send_mail("smtp服务器地址","smtp服务器域名","smtp帐号","smtp密码",true);
$sendmail->send("你要发的地址", "你的邮件地址", "邮件题名", 邮件内容)
?>
楼上给的类就是通过socket来发送的,虽然速度不如mail(),但通用性强,再复杂点可以发送附件之类的
很好用的
看看你的SMTP服务器是否运行