php配置了mail插件之后不就可以用了么?

解决方案 »

  1.   

    回复人: zairwolfi(君子兰) ( ) 信誉:90 是smtp的配置吗?我配了啊...SMTP = 127.0.0.1sendmail_from = [email protected]
      

  2.   

    不必非得装smtp吧?php配置了mail库就可以了吧。
      

  3.   

    发邮件有三种方式:
    一种是使用mail()函数,就是说服务器必须是Linux/Unix,并且装了Sendmail一类的软件,那么直接执行mail()就能发送邮件
    另一种就是使用SMTP协议来发送邮件,使用PHP的socket来连接远程的smtp服务器来发送邮件.
    最后一种是发送win32下的邮件.
    我找段DISCUZ!论坛上的发送邮件代码来举例:
    它发送邮件有两个文件,一个是mail_config.php,是发送邮件配置文件,另一个是sendmail.php,是具体的发送邮件程序.
    mail_config.php代码如下:
    //mail_config.php<?php$sendmail_silent = 1; // 屏蔽邮件发送中的全部错误提示(推荐), 1=是, 0=否
    $mailsend = 1; // 邮件发送方式 0=不发送任何邮件
    // 1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式)
    // 2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
    // 3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)
    //
    // 可通过 utilities/testmail.php 测试您的系统支持哪种邮件发送方式if($mailsend == 1) { // 通过 PHP 函数及 UNIX sendmail 发信(无需配置)} elseif($mailsend == 2) { // 通过 Discuz! SMTP 模块发信 $mailcfg['server'] = 'smtp.21cn.com'; // SMTP 服务器
    $mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改
    $mailcfg['auth'] = 1; // 是否需要 AUTH LOGIN 验证, 1=是, 0=否
    $mailcfg['from'] = 'Discuz <[email protected]>'; // 发信人地址 (如果需要验证,必须为本服务器地址)
    $mailcfg['auth_username'] = 'myaccount'; // 验证用户名
    $mailcfg['auth_password'] = 'password'; // 验证密码} elseif($mailsend == 3) { // 通过 PHP 函数及 SMTP 服务器发信 $mailcfg['server'] = 'smtp.your.com'; // SMTP 服务器, 以下设置仅对 WIN32 系统有效
    $mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改}?>
    //sendmail.php 文件<?
    require $discuz_root.'./mail_config.php';
    @include language('emails');error_reporting($sendmail_silent ? E_CORE_ERROR : E_ERROR | E_WARNING | E_PARSE);if(isset($language[$subject])) {
    eval("\$subject = \"".$language[$subject]."\";");
    }
    if(isset($language[$message])) {
    eval("\$message = \"".$language[$message]."\";");
    }$subject = str_replace("\r", '', str_replace("\n", '', $subject));
    $message = str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $message)))));if(!$from) {
    $from = "$bbname <$adminemail>";
    }if($mailsend == 1) { if(strpos($to, ',')) {
    mail('Discuz! User <me@localhost>', $subject, $message, "From: $from\r\nBcc: $to");
    } else {
    mail($to, $subject, $message, "From: $from");
    }} elseif($mailsend == 2) { $fp = fsockopen($mailcfg['server'], $mailcfg['port'], &$errno, &$errstr, 30);
    if($mailcfg['auth']) {
    $from = $mailcfg['from'];
    fputs($fp, "EHLO discuz \r\n");
    fputs($fp, "AUTH LOGIN \r\n");
    fputs($fp, base64_encode($mailcfg['auth_username'])." \r\n");
    fputs($fp, base64_encode($mailcfg['auth_password'])." \r\n");
    } else {
    fputs($fp, "HELO discuz \r\n");
    } fputs($fp, "MAIL FROM: $from\r\n"); foreach(explode(',', $to) as $touser) {
    $touser = trim($touser);
    if($touser) {
    fputs($fp, "RCPT TO: $touser\r\n");
    }
    } fputs($fp, "DATA\r\n");
    $tosend  = "From: $mailcfg[from]\r\n";
    $tosend .= "To: Discuz Users <[email protected]>\r\n";
    $tosend .= 'Subject: '.str_replace("\n", ' ', $subject)."\r\n\r\n$message\r\n.\r\n"; 
    fputs($fp, $tosend); fputs($fp, "QUIT\r\n");
    echo nl2br(fread($fp, 10000)); //debug
    fclose($fp);} elseif($mailsend == 3) { ini_set('SMTP', $mailcfg['server']);
    ini_set('smtp_port', $mailcfg['port']);
    ini_set('sendmail_from', $from); foreach(explode(',', $to) as $touser) {
    $touser = trim($touser);
    if($touser) {
    mail($touser, $subject, $message, "From: $from");
    }
    }}error_reporting(E_ERROR | E_WARNING | E_PARSE);?>
    你仔细阅读上面的代码,就会明白了....