经过三个小时得奋斗还有safer得指导,我终于了解到了一个问题,在NT服务器下mail()函数不可用,至于为什么不可用现在暂时还没有找到答案。不能用mail()函数,那么我们应该怎么来解决这个问题呢?通过在互联网上的资料显示还有两种方法可以用,但是这两种方法都有一定的依赖性,下面我引用在DISCUZ论坛上的一段代码来具体说说:
<?php
/*
[Discuz!] (C)2001-2006 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$RCSfile: mail_config.inc.php,v $
$Revision: 1.3 $
$Date: 2006/02/23 13:44:02 $
*/
// [EN] !ATTENTION! Type 2 & type 3 are only experimental, we do not provide any guarantee or support of this
// [CH] 注意: 发送方式 2 和 3 仅供实验用并小规模测试可行, 我们不对此提供任何保证和技术支持
$sendmail_silent = 1; // ignore error reporting, 1=yes, 0=no
// 屏蔽邮件发送中的全部错误提示, 1=是, 0=否
$mailsend = 1; // Sending type 0=do not send any mails
// 1=send via PHP mail() function and UNIX sendmail
// 2=send via Discuz! SMTP/ESMTP interface
// 3=send via PHP mail() and SMTP(only for win32, do not support ESMTP)
// 邮件发送方式 0=不发送任何邮件
// 1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式)
// 2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
// 3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)
//
// 可通过 utilities/testmail.php 测试您的系统支持哪种邮件发送方式
if($mailsend == 1) {
// Send via PHP mail() and UNIX sendmail(no extra configuration)
// 通过 PHP 函数及 UNIX sendmail 发信(无需配置)
} elseif($mailsend == 2) { // send via Discuz! ESMTP interface
// 通过 Discuz! SMTP 模块发信
$mailcfg['server'] = 'mail.wanseda.com'; // SMTP host address
// SMTP 服务器
$mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改
// SMTP port, leave default for most occations
$mailcfg['auth'] = 1; // require authentification? 1=yes, 0=no
// 是否需要 AUTH LOGIN 验证, 1=是, 0=否
$mailcfg['from'] = '中国万兴达联盟论坛 <wanseda@wanseda.com>'; // mail from (if authentification required, do use local email address of ESMTP server)
// 发信人地址 (如果需要验证,必须为本服务器地址)
$mailcfg['auth_username'] = 'wanseda@wanseda.com'; // username for authentification
// 验证用户名
$mailcfg['auth_password'] = '111111'; // password for authentification
// 验证密码
} elseif($mailsend == 3) { // send via PHP mail() and SMTP(only for win32, do not support ESMTP)
// 通过 PHP 函数及 SMTP 服务器发信
$mailcfg['server'] = '61.152.93.88'; // SMTP host address
// SMTP 服务器
$mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改
// SMTP port
}
?>
通过以上代码不难看出后两种方法都是通过SMTP方式来发送邮件,但是这两种方法又不是一样,他们还是有区别的,第二种方法是通过外部SMTP服务器来发送邮件,而大多数SMTP服务商都是需要验证的,大多是通不过得,具体为啥我还要研究一下!最后一种方法要简单一点,但是这就给服务器有关了,服务器必须要安装了SMTP组件才可以用,如果方便可以叫空间商提供,所以我的看法是用最后一种方法更容易实现!但是总之还是很复杂,没有在UNIX服务器下那么简单!

Comments NOTHING