NT服务器下php发邮件

lovexu 发布于 2006-10-20 33 次阅读


经过三个小时得奋斗还有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服务器下那么简单!

此作者没有提供个人介绍。
最后更新于 2019-10-30